如何使用 jQuery 在 HTML 输入框中仅允许数字(0-9)?
我正在创建一个网页,其中有一个输入文本字段,其中我只想允许输入数字字符,例如 (0,1,2,3,4,5...9) 0-9。
我怎样才能使用 jQuery 做到这一点?
I am creating a web page where I have an input text field in which I want to allow only numeric characters like (0,1,2,3,4,5...9) 0-9.
How can I do this using jQuery?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(30)
注意:这是更新的答案。 下面的评论引用了一个与键码混淆的旧版本。
jQuery
自己尝试一下在 JSFiddle 上。
没有本机 jQuery 实现,但您可以使用以下
inputFilter
过滤文本的输入值code> 插件(支持复制+粘贴、拖放、键盘快捷键、上下文菜单操作、不可输入的键、插入符号位置、不同的键盘布局、有效性错误消息和 自 IE 9 起的所有浏览器):
您现在可以使用
inputFilter
插件安装输入过滤器:将您喜欢的样式应用到输入错误类别。 这里有一个建议:
有关更多输入过滤器示例,请参阅 JSFiddle 演示。 另请注意,您仍然必须进行服务器端验证!
纯 JavaScript(不含 jQuery)
实际上并不需要 jQuery,您也可以使用纯 JavaScript 执行相同的操作。 请参阅此答案。
HTML 5
HTML 5 有一个带有
的本机解决方案(请参阅 规范),但请注意,浏览器支持各不相同:
步骤
,min
和max
属性。e
和E
。 另请参阅此问题。在 w3schools.com 上亲自尝试一下。
Note: This is an updated answer. Comments below refer to an old version which messed around with keycodes.
jQuery
Try it yourself on JSFiddle.
There is no native jQuery implementation for this, but you can filter the input values of a text
<input>
with the followinginputFilter
plugin (supports Copy+Paste, Drag+Drop, keyboard shortcuts, context menu operations, non-typeable keys, the caret position, different keyboard layouts, validity error message, and all browsers since IE 9):You can now use the
inputFilter
plugin to install an input filter:Apply your preferred style to input-error class. Here's a suggestion:
See the JSFiddle demo for more input filter examples. Also note that you still must do server side validation!
Pure JavaScript (without jQuery)
jQuery isn't actually needed for this, you can do the same thing with pure JavaScript as well. See this answer.
HTML 5
HTML 5 has a native solution with
<input type="number">
(see the specification), but note that browser support varies:step
,min
andmax
attributes.e
andE
into the field. Also see this question.Try it yourself on w3schools.com.
这是我使用的函数:
然后您可以通过执行以下操作将其附加到您的控件:
Here is the function I use:
You can then attach it to your control by doing:
排队:
不显眼的风格(使用 jQuery):
Inline:
Unobtrusive style (with jQuery):
您可以像这样在输入事件上使用:
但是,这个代码特权是什么?
You can use on input event like this:
But, what's this code privilege?
您可以使用简单的 JavaScript 正则表达式来测试纯数字字符:
如果输入是数字,则返回 true,否则返回 false。
或者对于事件键码,简单使用如下:
You could just use a simple JavaScript regular expression to test for purely numeric characters:
This returns true if the input is numeric or false if not.
or for event keycode, simple use below :
简短而甜蜜 - 即使在 30 多个答案之后永远不会引起太多关注;)
Short and sweet - even if this will never find much attention after 30+ answers ;)
使用 JavaScript 函数 isNaN,
if (isNaN(document.getElementById('inputid' ).val()))更新:
这里有一篇很好的文章讨论它,但使用 jQuery: 将 HTML 文本框中的输入限制为数值
Use JavaScript function isNaN,
if (isNaN(document.getElementById('inputid').val()))Update:
And here a nice article talking about it but using jQuery: Restricting Input in HTML Textboxes to Numeric Values
来源:http://snipt.net/GerryEng/jquery-making -文本字段仅接受数字值
Source: http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values
我在我们内部的通用 js 文件中使用它。 我只是将类添加到需要此行为的任何输入中。
I use this in our internal common js file. I just add the class to any input that needs this behavior.
对我来说更简单的是
Simpler one for me is
为什么这么复杂? 您甚至不需要 jQuery,因为有一个 HTML5 模式属性:
最酷的事情是它在移动设备上显示数字键盘,这比使用 jQuery 好得多。
Why so complicated? You don't even need jQuery because there is a HTML5 pattern attribute:
The cool thing is that it brings up a numeric keyboard on mobile devices, which is way better than using jQuery.
您可以使用这个非常简单的解决方案执行相同的操作
我参考了此链接解决方案。 它工作完美!
You can do the same by using this very simple solution
I referred to this link for the solution. It works perfectly!!!
您可以尝试 HTML5 number 输入:
对于不兼容的浏览器,有Modernizr 和 Webforms2 后备。
You can try the HTML5 number input:
For non-compliant browsers there are Modernizr and Webforms2 fallbacks.
HTML5 中的pattern 属性指定一个正则表达式,用于检查元素的值。
注意:pattern 属性适用于以下输入类型:文本、搜索、url、电话、电子邮件和密码。
[0-9]可以替换为任意正则表达式条件。
{1,3} 表示最少可以输入1位,最多可以输入3位数字。
The pattern attribute in HTML5 specifies a regular expression that the element's value is checked against.
Note: The pattern attribute works with the following input types: text, search, url, tel, email, and password.
[0-9] can be replaced with any regular expression condition.
{1,3} it represents minimum of 1 and maximum of 3 digit can be entered.
使用 jQuery.validate 相当简单
Something fairly simple using jQuery.validate
这里有两种不同的方法:
Here is two different approaches:
如果有一个平滑的 OneLiner:
If have a smooth OneLiner:
在 html 代码中尝试一下,就像 onkeypress 和 onpast
try it within html code it self like onkeypress and onpast
我找到了一个非常好的且简单的解决方案,它不会像其他解决方案那样阻止用户选择文本或复制粘贴。 jQuery 风格:)
I came to a very good and simple solution that doesn't prevent the user from selecting text or copy pasting as other solutions do. jQuery style :)
你可以使用这个 JavaScript 函数:
你可以将它绑定到你的文本框,如下所示:
我在生产中使用了上面的函数,它工作得很好,而且是跨浏览器的。 此外,它不依赖于 jQuery,因此您可以使用内联 JavaScript 将其绑定到文本框:
You can use this JavaScript function:
And you can bind it to your textbox like this:
I use the above in production, and it works perfectly, and it is cross-browser. Furthermore, it does not depend on jQuery, so you can bind it to your textbox with inline JavaScript:
我想这会对大家有帮助
I think it will help everyone
这是我前段时间创建的一个快速解决方案。 您可以在我的文章中阅读更多相关信息:
http://ajax911.com/numbers-numeric-field-jquery/< /a>
Here is a quick solution I created some time ago. you can read more about it in my article:
http://ajax911.com/numbers-numeric-field-jquery/
这就是我最近写信来实现这一目标的原因。 我知道这个问题已经得到解答,但我将其留待以后使用。
该方法只允许0-9键盘和小键盘、退格键、制表符、左右箭头(普通形式操作)
This is why I recently wrote to accomplish this. I know this has already been answered but I'm leaving this for later uses.
This method only allows 0-9 both keyboard and numpad, backspaces, tab, left and right arrows (normal form operations)
我根据上面 @user261922 的帖子编写了我的文章,稍作修改,以便您可以选择全部、选项卡,并且可以处理同一页面上的多个“仅数字”字段。
I wrote mine based off of @user261922's post above, slightly modified so you can select all, tab and can handle multiple "number only" fields on the same page.
我也想回答:)
就是这样......只是数字。 :) 几乎它可以只与“模糊”一起工作,但是......
I also would like to answer :)
That's it...just numbers. :) Almost it can work just with the 'blur', but...
您希望允许选项卡:
You would want to allow tab:
这是使用 jQuery UI Widget 工厂的答案。 您可以轻松自定义允许使用的字符。
这将允许数字、数字符号和美元金额。
Here is an answer that uses jQuery UI Widget factory. You can customize what characters are allowed easily.
That would allow numbers, number signs and dollar amounts.
这看起来是牢不可破的。
This seems unbreakable.
需要确保数字键盘和 Tab 键也能正常工作
Need to make sure you have the numeric keypad and the tab key working too