Javascript键盘输入过滤

lie*_*f79 8 javascript

有没有人有一个有效的动态javascript输入过滤器,限制跨多个浏览器的文本输入?

我在网上看过多个例子,但大多数都有缺陷或缺乏多浏览器支持.

我目前的尝试发布在下面,但它在firefox下的转换数字失败了,我还没有尝试过其他浏览器.

正如http://www.quirksmode.org/js/keys.html所示,这不是一个简单的问题.

有没有人有更好的解决方案?

var numb = /[0-9]/;
var lwr = /[a-z]/;
var upr = /[A-Z]/;
var alpha = /a-zA-Z]/; //not checked
var alphaNum = /a-zA-Z0-9/; //not checked

function onKeyPressAcceptValues(e, reg){
    var key = window.event ? e.keyCode : e.which;
    //permit backspace, tab, delete, arrow buttons, (key == 0 for arrow keys)

    alert(key);
    if(key == 8 || key == 9 || key == 46 ||(key>32 && key <41 ||key == 0)){
        return true;
    }
    var keychar = String.fromCharCode(key);
    return reg.test(keychar);
}

function isNumberKey(parm) {return onKeyPressAcceptValues(parm,numb);}
function isLowerKey(parm) {return onKeyPressAcceptValues(parm,lwr);}
function isUpperKey(parm) {return onKeyPressAcceptValues(parm,upr);}
function isAlphaKey(parm) {return onKeyPressAcceptValues(parm,alpha);}
function isAlphanumKey(parm) {return onKeyPressAcceptValues(parm,alphaNum);} 
Run Code Online (Sandbox Code Playgroud)

它将被用于通过

<input type="text" name="pw[first_name]" size="15" maxlength="15" onkeypress="return isAlphaKey(event)">

Jos*_*ola 2

无论如何,捕获键盘事件并不能解决问题,因为用户始终可以使用“编辑|”。粘贴。即使您确实想出了一个跨浏览器解决方案来处理这个问题,用户也总是可以通过禁用 Javascript 来绕过一切。

换句话说,不要浪费时间。当用户尝试提交无效数据时,只需给他们一个错误。