我正在创建一个网页,其中有一个输入文本字段,我想在其中只允许数字字符,例如 (0,1,2,3,4,5…9) 0-9。
如何使用 jQuery 做到这一点?
注意: 这是一个更新的答案。下面的评论指的是一个乱码的旧版本。
在 JSFiddle 上 自己尝试一下。
没有本机 jQuery 实现,但是您可以<input>使用以下inputFilter插件过滤文本的输入值(支持复制+粘贴、拖放、键盘快捷键、上下文菜单操作、不可键入的键、插入符号位置、不同键盘布局,以及自 IE 9 以来的所有浏览器):
<input>
inputFilter
// 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 演示。另请注意,您仍然 必须进行服务器端验证!
这实际上不需要 jQuery,你也可以用纯 JavaScript 做同样的事情。看到这个答案。
HTML 5 有一个原生解决方案<input type="number">(参见规范),但请注意浏览器支持各不相同:
<input type="number">
step
min
max
e
E
在 w3schools.com 上亲自尝试。