阻止用户使用jQuery在文本框中输入非数字

时间:2012-07-18 12:59:36

标签: jquery textbox

  

可能重复:
  How to allow only numeric (0-9) in HTML inputbox using jQuery?

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

$("#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()会出现问题。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

根据这个Opera preventDefault() on keydown event,有些浏览器不支持在keydown上使用preventDefault。这可能是你的情况吗?

也许你可以试试按键吗?

那或者你可以使用正则表达式并用“”

替换无效字符

答案 1 :(得分:0)

Funnily it works,如果您之间没有任何提醒,请提醒代码中断。