防止用户使用 jQuery 在文本框中输入非数字 [重复]

Posted

技术标签:

【中文标题】防止用户使用 jQuery 在文本框中输入非数字 [重复]【英文标题】:Prevent user from entering a non number in a textbox using jQuery [duplicate] 【发布时间】:2012-07-17 12:35:57 【问题描述】:

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

我有一个 jquery sn-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() 有问题。有人可以帮忙吗?

【问题讨论】:

他不是在问如何做 x,他是在问为什么 y 不工作。 @Rodik 我不这么认为。他在哪里问这个? Esailija,Ben 建议这是另一个问题的重复,我指出它不是,因为这个提问者已经有他自己的代码,他在问为什么 e.preventDefault 不是在他的情况下工作,他并没有要求他自己的代码的不同实现。 【参考方案1】:

有趣的是it works,如果您在两者之间没有警报,则警报代码会中断。

【讨论】:

:O 从没注意到!谢谢【参考方案2】:

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

也许你可以试试按键?

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

【讨论】:

以上是关于防止用户使用 jQuery 在文本框中输入非数字 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

用于防止输入任何不匹配正则表达式的输入的 jquery 插件

如何防止用户在文本框中输入特殊字符[重复]

javascript 防止在输入框中键入非数字

文本框中的特定文本可以触发 jQuery 事件吗?

使用 jQuery 防止 html 输入中的值

只接受文本框中的数字 - jQuery