如何替换道场中的按键事件?

How to replace keypress event in dojo?

我有一个下拉菜单,其中包含值名称、手机号码和与所选下拉菜单相关的输入文本框。

我想在从下拉列表中选择 Name 时限制文本框条目值仅包含字母,而在选择 MobileNumber 时仅包含数字。这是我通过添加以下内容来实现的。

*

   On(dom.byId("dropdownid"), "keypress", function(e)){
if(dom.byId("dropdownid").value=="Name"){
     On(dom.byId("textboxid"), "keypress", function(e){
        if(RegularExpressionAlphabetOnlyCondition == e.charCode){
        Stopping the event using e.stopEvent();
        }
        });
}
if(dom.byId("dropdownid").value=="MobileNumber"){
     On(dom.byId("textboxid"), "keypress", function(e){
        if(RegularExpressionNumbersOnlyCondition == e.charCode){
        Stopping the event using e.stopEvent();
        }
        });
}
});

*

现在,在更改下拉列表值时,我正在为下拉列表添加更改事件,并添加类似的按键事件,其正则表达式条件仅为数字。 但是它不起作用并且仍然只接受字母表。它显然没有替换已经放置的按键事件。

如何在 dojo 中删除下拉列表值更改时文本框的按键事件?

on函数返回句柄

var h =  On(dom.byId("textboxid"), "keypress", function(e){console.log("do Stuff"});

然后您可以使用句柄取消它的侦听器,然后再进行新的侦听

if(h)h.remove();