【问题标题】:Jquery keypress 37 issue, '%' and [ left arrow ] not work in IE 10Jquery keypress 37 问题,'%' 和 [左箭头] 在 IE 10 中不起作用
【发布时间】:2026-01-22 17:55:02
【问题描述】:

早上好,

我在 IE 10 上遇到了一个问题,我的按键仍然可以输入“%”,但 FF 和 Chrome 没有这样的问题。 我发现键 37 是与 ASCII 中的 '%' 匹配的 [左箭头]。 我的示例代码如下:

$('#refId').bind("keypress", function(event) {
            // allow  letters, numbers and keypad numbers ONLY
            var key = event.charCode;
            if((key >= 48 && key <= 57) ||
                (key >= 65 && key <= 90) ||
                (key >= 97 && key <= 122)){
                return true;
            }

            //allow backspace, tab, left arrows, right arrow, delete
            key = event.keyCode;
            if(key == 8 || 
                    key == 9 ||
                    key == 37 ||
                    key == 39 ||
                    key == 46){
                return true;
            }

            return false; 
    });

可以告诉我如何解决这个问题吗?

谢谢。 -fsloke

【问题讨论】:

标签: javascript jquery keypress


【解决方案1】:

改用var key = event.which; 并加入 if 语句。

event.which 属性规范了 event.keyCode 和 event.charCode。 键盘按键输入建议观看 event.which。

-https://api.jquery.com/event.which/

$('#refId').on("keydown", function(event) {
    // allow letters, numbers and keypad numbers ONLY
    var key = event.which;
    if((key >= 48 && key <= 57) ||
        (key >= 65 && key <= 90) ||
        (key >= 97 && key <= 122) ||
        key == 8 || 
        key == 9 ||
        key == 37 ||
        key == 39 ||
        key == 46) {
        return true;
    }

    return false; 
});

【讨论】:

  • 我确实使用了 which 但仍然没有解决这个问题。谢谢。