密钥验证的跨浏览器问题

时间:2013-06-25 11:04:04

标签: javascript jquery

<script type="text/javascript">
function numbersonly(e){
var unicode=e.charCode? e.charCode : e.keyCode
if (unicode!=8){ //if the key isn't the backspace key (which we should allow)
if (unicode<65||unicode>90) //if not a Capital Alphabet
return false //disable key press
}
}
</script>

<form>
<input type="text" size=18 onkeyup="return numbersonly(event)">
</form>

此代码工作正常。但IE不支持charcode。在Keycode中,65到90范围包括大写和小写字母。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

case之内必须检查许多条件的简单方法不会处理它,

检查大写锁定是否开启

使用此功能,

function isCapslock(e){

    e = (e) ? e : window.event;

    var charCode = false;
    if (e.which) {
        charCode = e.which;
    } else if (e.keyCode) {
        charCode = e.keyCode;
    }

    var shifton = false;
    if (e.shiftKey) {
        shifton = e.shiftKey;
    } else if (e.modifiers) {
        shifton = !!(e.modifiers & 4);
    }

    if (charCode >= 97 && charCode <= 122 && shifton) {
        return true;
    }

    if (charCode >= 65 && charCode <= 90 && !shifton) {
        return true;
    }

    return false;

}

来自http://dougalmatthews.com/articles/2008/jul/2/javascript-detecting-caps-lock/

<强>另外

在jquery中使用e.which。它们会为所有浏览器规范化此值。

此外,您可以查看e.shiftKey

来源Using e.keyCode || e.which; how to determine the differance between lowercase and uppercase?