2014-04-15 2 views
0

Javascript 이벤트 핸들러를 Dojo 1.9와 연결하여 키를 누를 때마다 값이 배치되어 해당 필드에 유효한지 확인한다. in.Dojo 1.9에서 키 이벤트 작업하기

그러나 키를 누르면 이벤트가 실행되지 않습니다. 아마 오타 나 무언가 어리석은 짓 일지 모르지만 나는 그것을 볼 수 없다. 여기

은 샘플 입력 태그와 내가 입력을 연결할 때 사용 해요 JS 코드의 - 사람이 문제에 날 지점 수 있습니다 일반적으로

<input id="field2" name="field2" 
     data-dojo-type="dijit/form/ValidationTextBox" 
     data-dojo-props="constraints:{ 
     required: true, 
     maxLength: 3}, 
     pattern:'[0-9]{1,2}', 
     invalidMessage:'Please enter a number in this field.', 
     rangeMessage:'Please enter a number between and 99.', 
     missingMessage:'This value is required.' " 
     /> 



<script type="text/javascript"> 
    require([ 
     "dojo/query", 
     "dojo/parser", 
     "dojo/dom", 
     "dojo/on", 
     "dojox/validate", 
     "dojox/validate/web", 
     "dojox/validate/check", 
     "dojox/validate/us", 
     "dojo/domReady!" 
    ], 
      function (query, parser, dom, on, validate) { 

       var inputs = query("input"); 
       for (i = 0; i<inputs.length; i++) { 
        var node = inputs[i]; 
        on(node, "keydown", function(e) { 
         alert("I got called!"); 
        }); 
       }; 

      }); 
</script> 

답변

2

당신이 도장 ValidationTextBox를 만드는 때문에, 어떤 도장 keypress, keydown 등과 같은 이벤트를 처리하는 입력 주위에 몇 개의 래퍼를 작성합니다. 이러한 래퍼는 또한 전파를 중지하므로 위젯 자체가 방출하는 이벤트를 청취해야합니다.

대신이 시도 : 위의 코드와 함께, 당신은 아마 너무 "는 Dijit/레지스트리"를 요구해야한다는

var inputs = query(".dijitTextBox"); //Searching for all textboxes 
for (i = 0; i<inputs.length; i++) { 
    var node = inputs[i]; 
    var nodeWidget = registry.byNode(node); 
    on(nodeWidget, "keydown", function(e) { 
    alert("I got called!"); 
    }); 
}; 

참고.