【问题标题】:js disabling backspace functionality in firefoxjs禁用firefox中的退格功能
【发布时间】:2012-08-27 12:48:05
【问题描述】:

我有以下 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(); 
    }
}

任何人都可以看看并提出一个修复 Firefox 以不阻止退格键作用于文本字段的方法吗?

可能我猜,为退格字符添加正则表达式就可以了。有谁知道,如何添加正则表达式以匹配 backspace

编辑:

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

【问题讨论】:

    标签: javascript regex firefox textinput keycode


    【解决方案1】:

    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

    【讨论】:

    • 这完全有帮助!你也可以拦截tab键吗?已更新问题请看。
    • 非常感谢!!!也只是为了其他人的信息here 是各种键的键码列表。
    【解决方案2】:

    我不确定退格正则表达式,但这应该也可以工作

    $("#myInput").bind('keyup', function(){
         val1 = $(this).val();
         $(this).val(val1.replace(/[^0-9.]/g,''));
    });
    

    您可以取消绑定并直接附加 keyup

    小提琴 - jsfiddle

    【讨论】:

    • 这也很有帮助。但是另一种解决方案似乎更流畅,因为输入字段中根本没有出现无效字符。有了这个解决方案,我们可以在输入字段中看到那些字符。感谢您的帮助。
    猜你喜欢
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2019-04-23
    相关资源
    最近更新 更多