我正在使用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类型时,它就会开始工作。
任何想法或帮助都将受到赞赏。
答案 0 :(得分:1)
好吧,你把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。
答案 1 :(得分:1)
您可以添加以下行,而不是使用按键事件:
var btnClick = dijit.byId("test")._onKey = function(evt) {
key = evt.keyCode;
if (key == dojo.keys.ENTER) {
//what you want it to do
}
}