如何在dojo中替换keypress事件?

时间:2016-02-02 15:26:07

标签: events dojo keypress

我有一个带有值的下拉列表 - 名称,MobileNumber和与所选下拉列表相关的输入文本框。

我希望在从下拉列表中选择名称时仅使用字母表限制文本框条目值,并且仅在选择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();
        }
        });
}
});

*

现在,在更改下拉列表值时,我将为下拉列表添加更改事件,并添加类似的keypressevent,其中只包含数字的regularrexpression条件。 但它还没有工作,只接受字母表。它显然没有取代已经放置的keypressevent。

如何在更改下拉列值时删除dojo中针对文本框的Keypress事件?

1 个答案:

答案 0 :(得分:1)

on函数返回句柄

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

然后,您可以在执行新操作之前使用句柄取消侦听器

if(h)h.remove();