0
<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 的范围包括大写和小写字母。如何解决问题?

4

1 回答 1

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/

此外

e.which在 jquery 中使用。他们为所有浏览器标准化了这个值。

此外,您可以检查e.shiftKey.

来源使用 e.keyCode || e.哪个;如何确定小写和大写之间的区别?

于 2013-06-25T11:15:55.240 回答