防止用户使用 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 在文本框中输入非数字 [重复]的主要内容,如果未能解决你的问题,请参考以下文章