2

可能重复:
如何使用 jQuery 在 HTML 输入框中只允许数字(0-9)?

我有一个 jquery 片段,它只允许特定文本框中的数字。如果用户键入字母/特殊字符,它根本不允许字符进入文本框。但它不起作用。

$("#PostalCode").keydown(function (e) {
            if (e.shiftKey || e.ctrlKey || e.altKey) { // if shift, ctrl or alt keys held down
                e.preventDefault();         // Prevent character input
            } else {
                var n = e.keyCode;
                if (!((n == 8)              // backspace
                        || (n == 46)                // delete
                        || (n >= 35 && n <= 40)     // arrow keys/home/end
                        || (n >= 48 && n <= 57)     // numbers on keyboard
                        || (n >= 96 && n <= 105))   // number on keypad
                        ) {
                    alert("in if");
                    e.preventDefault();     // Prevent character input
                }
            }
        });

每当我输入非数字(字母或特殊字符)时都会显示警报消息,这意味着我的逻辑可能是正确的。但是字符仍然显示在文本框中,这意味着e.preventDefault(). 任何人都可以帮忙吗?

4

2 回答 2

0

根据这个Opera preventDefault() on keydown 事件,一些浏览器不支持在 keydown 上的 preventDefault。你会是这种情况吗?

也许您可以尝试使用按键?

那或者你可以使用正则表达式并用“”替换无效字符

于 2012-07-18T13:03:57.673 回答
0

有趣的是,如果您在两者之间没有警报,它会起作用,并提醒代码中断。

于 2012-07-18T13:10:27.557 回答