注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。
jQuery的
在JSFiddle上 尝试一下。
对此没有原生的jQuery实现,但是您可以
<input>使用以下
inputFilter插件过滤文本的输入值(支持Copy + Paste,Drag
+ Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入符号位置,其他键盘布局以及IE
9以后的所有浏览器):
// Restricts input for the set of matched elements to the given inputFilter function.(function($) { $.fn.inputFilter = function(inputFilter) { return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() { if (inputFilter(this.value)) { this.oldValue = this.value; this.oldSelectionStart = this.selectionStart; this.oldSelectionEnd = this.selectionEnd; } else if (this.hasOwnProperty("oldValue")) { this.value = this.oldValue; this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd); } else { this.value = ""; } }); };}(jQuery));您现在可以使用
inputFilter插件安装输入过滤器:
$(document).ready(function() { $("#myTextBox").inputFilter(function(value) { return /^d*$/.test(value); // Allow digits only, using a RegExp });});有关更多输入过滤器示例,请参见JSFiddle演示。另请注意,您仍然
必须执行服务器端验证!
纯Javascript(无jQuery)
实际上并不需要jQuery,您也可以使用纯Javascript做同样的事情。看到这个答案。
HTML 5
HTML 5提供了一个本机解决方案
<inputtype="number">(请参见规范),但是请注意,浏览器支持有所不同:
- 大多数浏览器仅在提交表单时验证输入,而在键入时不验证输入。
- 大多数移动浏览器不支持
step
,min
和max
属性。 - Chrome(版本71.0.3578.98)仍然允许用户输入字符
e
并E
输入字段。也看到这个问题。 - Firefox(版本64.0)和Edge(EdgeHTML版本17.17134)仍然允许用户在字段中输入 任何 文本。
在w3schools.com上尝试一下。



