js在firefox中禁用退格功能

mtk*_*mtk 2 javascript regex firefox keycode textinput

我有以下javascript以防止用户在文本字段中输入无效字符.它在chrome中运行良好,但在firefox中运行不佳.它阻止backspace在firefox的文本字段中输入密钥.

function onlyNumbers(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode( key );
    var regex = /[0-9]|\./;
    if( !regex.test(key) ) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以看看并建议修复firefox,以防止退格键作用于文本字段?

可能我想,为退格字符添加正则表达式可以在这里完成工作.有谁知道,如何添加正则表达式来匹配backspace

编辑:

此外,上面的代码应该用Tab键行为中断,我无法使用Tab键跳转到表单中的下一个字段.

Ori*_*iol 7

http://jsfiddle.net/8ZJZD/1/

var el=document.getElementById('cnfMobileNo');
el.onkeydown=function onlyNumbers(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    if(key===8){return;}
    key = String.fromCharCode(key);
    var regex = /[0-9]|\./;
    if( !regex.test(key) ) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
    }
}
Run Code Online (Sandbox Code Playgroud)

只是用 if(key===8){return;}

编辑:

如果要排除更多键,请使用

var el=document.getElementById('cnfMobileNo');
el.onkeydown=function onlyNumbers(evt) {
    var theEvent = evt || window.event,
        key = theEvent.keyCode || theEvent.which,
        exclusions=[8,9]; /*Add exceptions here */
    if(exclusions.indexOf(key)>-1){return;}
    key = String.fromCharCode(key);
    var regex = /[0-9]|\./;
    if( !regex.test(key) ) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里看到:http://jsfiddle.net/8ZJZD/2/

您可以使用了解keyCode每个密钥alert(key)

(之前key = String.fromCharCode(key)).

你也可以排除

  • 箭头键:37,38,39,40
  • Enter:13
  • 上下文菜单:93
  • Start并且End:36,35

  • 非常感谢!!!另外,仅供其他信息[这里](http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes)是各种密钥的密钥代码列表. (2认同)