0

で他のキープレスイベントを無効にするために道場を使用してい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機能でさえ機能していません。しかし、入力から道場タイプを削除すると、機能し始めます。

どんなアイデアや助けもいただければ幸いです。

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 に答える