js禁用firefox中的退格功能

Posted

技术标签:

【中文标题】js禁用firefox中的退格功能【英文标题】:js disabling backspace functionality in 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 键跳转到表单中的下一个字段。

【问题讨论】:

【参考方案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

【讨论】:

这也很有帮助。但是另一种解决方案似乎更流畅,因为输入字段中根本没有出现无效字符。有了这个解决方案,我们可以在输入字段中看到那些字符。感谢您的帮助。

以上是关于js禁用firefox中的退格功能的主要内容,如果未能解决你的问题,请参考以下文章

Android:WebView/BaseInputConnection 中的退格键

哪个委托方法将调用单击键盘中的退格按钮

访问表单中的退格删除所有记录

以正确的方式检测 UITextField 中的退格

如何通过 html/js 在 Firefox 中禁用 Pip(画中画)?

即使使用了 e.preventdefault(),在显示警报窗口后退格在 Firefox 中工作