mootools中的键盘停止事件不起作用

问题描述 投票:0回答:1

我正在尝试防止在文本字段中输入非数字字符。我的代码可以验证字符,但不会阻止将其添加到文本框中。

我的代码:

var isNumberKey = function(e){
    //alert(e.which);
    if (e.which > 31 && (e.which < 48 || e.which > 57)) 
        return false;   
    return true;
}

var isBackSpaceKey = function(e){
    return e.which == 8;
}

var isArrowKey = function(e) {
    return e.which >= 37 && e.which <= 40;
}

var inputs = $$('.numberOnly');
inputs.addEvent('keyup', function(e){
    console.log(e.which);
    if (!isNumberKey(e) && !isBackSpaceKey(e) && !isArrowKey(e)){
        e.stop();
        return false;
    }
    return true;
});

HTML:

<input name="t1" type="text" class="numberOnly" id="t1"/>
event-handling mootools stoppropagation mootools-events
1个回答
1
投票

您应使用keydown事件而不是keyup。我会这样:

var inputs = $$('.numberOnly');
inputs.addEvent('keydown', function(e){
    if (e.code >= 48 && e.code <= 57 ){
        return true;
    }
    e.stop();
    return false;
});

http://jsfiddle.net/TsAkb/

希望这会有所帮助

编辑:

也许您也想允许使用“ tab”键,“ enter”键和“ backspace” = P

© www.soinside.com 2019 - 2024. All rights reserved.