js在Firefox中禁用退格功能 [英] js disabling backspace functionality in firefox

查看:178
本文介绍了js在Firefox中禁用退格功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有下面的JavaScript,以防止用户输入无效字符到文本字段。它在Chrome中运行良好,但不是在Firefox中。这是防止在Firefox的文本字段中输入 backspace 键。

 函数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();


$ / code $ / pre

任何人都可以请看看,并提出一个修复firefox不能防止退格键行事的文本字段?

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



编辑:



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

解决方案

请参阅 http://jsfiddle.net/8ZJZD/1/

  var el = document.getElementById('cnfMobileNo' ); 
el.onkeydown =函数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 =函数onlyNumbers(evt){
var theEvent = evt || window.event,
key = theEvent.keyCode ||事件,其中
排除= [8,9]; / *在这里添加异常* /
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();


$ / code $ / pre
$ b $ p

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



你可以使用 alert(key)



来了解每个键的 keyCode key = String.fromCharCode(key))。



您也可以排除




  • 方向键:37,38,39,40

  • Enter :13

  • 上下文菜单:93

  • 开始结束:36,35


I have following javascript to prevent user from entering invalid characters into a text field. It's working well in chrome but not in firefox. It's preventing the backspace key to be entered in the text field in 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(); 
    }
}

Can anyone please have a look and propose a fix for firefox to not prevent backspace key to act on a text field ?

Probably I guess, adding the regex for the backspace character would do the job here. Does anyone know, how to add the regex for matching the backspace

Edit:

Also, the above code has supposed to interrupted with the Tab key behaviour, I am not able to jump to next fields in the form using Tab key.

解决方案

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

Just use if(key===8){return;}

Edit:

If you want to exclude more keys, use

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

See it here: http://jsfiddle.net/8ZJZD/2/

You can know the keyCode of each key using alert(key)

(before key = String.fromCharCode(key)).

You could also exclude

  • The arrow keys: 37,38,39,40
  • Enter: 13
  • Context menu: 93
  • Start and End: 36,35

这篇关于js在Firefox中禁用退格功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆