2013-04-14 6 views
0

Я использую dojo для отключения других событий нажатия клавиш на dojo.form.numberTextBox. Я делаю так:Событие нажатия клавиши Dojo не работает

<input style="width: 100px" data-dojo-type="dijit.form.NumberTextBox" 
    name="test" id="test" maxlength="3"> 

И с помощью сценария:

require(["dojo/keys", "dojo/on"], 
    dojo.connect(dijit.byId("remainderDays"), "onKeyPress", function (evt) { 
    var charOrCode = evt.charCode || evt.keyCode; 
    if (charOrCode == keys.NUMPAD_0) { 
     dojo.stopEvent(evt); 
    } 
})); 

Его не работает.

Даже функция Javascript для отключения событий нажатия клавиш, кроме цифр, не работает. Но когда я удаляю тип dojo из ввода, он начинает работать.

Любая идея или помощь будут оценены.

ответ

0

Ну, вы поместили dojo.connect неправильно, и если я правильно понял, вы пытаетесь заблокировать все ключи, кроме цифр. Если вы хотите, что вы должны проверить, что-то вроде:

if (evt.charOrCode > '9' || evt.charOrCode < '0') { 
    ... 
} 

сам код выглядит следующим образом:

require(["dijit/form/NumberTextBox"]); 
require(["dojo/ready", "dojo/parser", "dojo/on", "dojo/keys"], function(ready, parser, on, keys) { 
    ready(function() { 
     parser.parse(); 

     on(dijit.byId("test"), "keypress", function(evt) { 
      if (evt.charOrCode > '9' || evt.charOrCode < '0') { 
       dojo.stopEvent(evt); 
      } 
     }); 
    }); 
}); 

Как вы можете видеть, что я удалил dojo.connect (потому что это не рекомендуется), и я использовал "keypress" мероприятие. Я также исправил ваш код (потому что ваш синтаксис был неправильным).

Рабочий JSFiddle можно найти here.

+0

1

Вы можете добавить следующую строку вместо нажатия клавиши событие:

var btnClick = dijit.byId("test")._onKey = function(evt) { 
key = evt.keyCode; 
if (key == dojo.keys.ENTER) { 
    //what you want it to do 
} 
} 
Смежные вопросы