0

我正在使用 dojo 来禁用dojo.form.numberTextBox. 我是这样做的:

<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 类型时,它开始工作。

任何想法或帮助将不胜感激。

4

2 回答 2

2

好吧,你放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 。

于 2013-04-15T06:27:36.147 回答
1

您可以添加以下行而不是使用按键事件:

var btnClick = dijit.byId("test")._onKey = function(evt) {
 key = evt.keyCode;
 if (key == dojo.keys.ENTER) {
  //what you want it to do
 }
}
于 2014-12-15T16:05:51.243 回答