2013-04-14 82 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 
} 
}