javascript - js在firefox中禁用退格功能

标签 javascript regex firefox textinput keycode

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

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(); 
    }
}

任何人都可以看看并提出修复 firefox 的方法,以防止退格键作用于文本字段吗?

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

的正则表达式

编辑:

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

最佳答案

参见 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();
    }
}

只需使用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();
    }
}

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

使用alert(key)可以知道每个键的keyCode

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

你也可以排除

  • 方向键:37、38、39、40
  • 输入:13
  • 上下文菜单:93
  • 开始结束:36,35

关于javascript - js在firefox中禁用退格功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12236721/

相关文章:

regex - 使用 awk 进行模式匹配

python - 在字符串 Python 中查找多个标记的字符串

javascript - 从 HTML 文本中捕获数字

php - 在带字符串的 onclick 事件中需要转义什么?

javascript - 来自 wordpress postmeta 表键的多个值

css - 如何在加载字体之前更改默认字体?

oracle - ssl_error_rx_record_too_long

c# - 检查用户是否在 Orchard CMS 中获得授权

regex - 正则表达式匹配字符串中的几个字符

css - 无法在 Firefox 中正确定位第二个内联 block 元素