$("#txtboxToFilter").keydown(function(event) {
// Allow only backspace and delete
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 ) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
}
}
});
14
需要确保您的数字键盘和标签键也可以正常工作
// Allow only backspace and delete
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {
}
else {
event.preventDefault();
}
}
5
jQuery
以下脚本中的 inputFilter 插件允许您在文本 <input> 上使用 any 种输入过滤器,包括各种数字过滤器 . 这将正确处理复制粘贴,拖放,键盘快捷键,上下文菜单操作,不可键入的键和所有键盘布局 . 作品cross-browser and on mobile, IE 9+ . Note that you still must do server side validation!
// Restricts input for each element in the set of matched elements to the given inputFilter.
(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);
}
});
};
}(jQuery));
用法:
// Restrict input to digits only by using a regular expression filter.
$("#myTextBox").inputFilter(function(value) {
return /^\d*$/.test(value);
});
您可能希望用于输入过滤的一些正则表达式:
/^-?\d*$/ 将输入限制为 integer 数字
/^\d*$/ 将输入限制为 unsigned integer 个数字
/^[0-9a-f]*$/i 将输入限制为 hexadecimal 数字
/^-?\d*[.,]?\d*$/ 将输入限制为 floating point 数字(允许 . 和 , 作为小数分隔符)
$("input.inputPhone").keyup(function() {
var jThis=$(this);
var notNumber=new RegExp("[^0-9]","g");
var val=jThis.val();
//Math before replacing to prevent losing keyboard selection
if(val.match(notNumber))
{ jThis.val(val.replace(notNumber,"")); }
}).keyup(); //Trigger on page load to sanitize values set by server
6
为什么这么复杂?你甚至不需要jQuery,因为有一个HTML5模式属性:
<input type="text" pattern="[0-9]*">
很酷的是,它在移动设备上显示了一个数字键盘,这比使用更好jQuery的 .
13
您可以使用此JavaScript函数:
function maskInput(e) {
//check if we have "e" or "window.event" and use them as "event"
//Firefox doesn't have window.event
var event = e || window.event
var key_code = event.keyCode;
var oElement = e ? e.target : window.event.srcElement;
if (!event.shiftKey && !event.ctrlKey && !event.altKey) {
if ((key_code > 47 && key_code < 58) ||
(key_code > 95 && key_code < 106)) {
if (key_code > 95)
key_code -= (95-47);
oElement.value = oElement.value;
} else if(key_code == 8) {
oElement.value = oElement.value;
} else if(key_code != 9) {
event.returnValue = false;
}
}
}
$(document).ready(function() {
$("#txtboxToFilter").keydown(function(event) {
// Allow only backspace and delete
if ( event.keyCode == 46 || event.keyCode == 8 ) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if (event.keyCode < 48 || event.keyCode > 57 ) {
event.preventDefault();
}
}
});
});
30 回答
检查输入值是否为数字的简单方法是:
您可以尝试HTML5 number输入:
对于不兼容的浏览器,有Modernizr和Webforms2回退 .
使用JavaScript函数isNaN,
if(isNaN(document.getElementById('inputid') . val()))
Update: 这里有一篇很好的文章谈论它但使用jQuery:Restricting Input in HTML Textboxes to Numeric Values
简短而甜蜜 - 即使在30个答案后也不会引起太多关注;)
这是一个使用jQuery UI Widget工厂的答案 . 您可以轻松自定义允许的字符 .
这将允许数字,数字符号和美元金额 .
您可以使用简单的JavaScript正则表达式来测试纯数字字符:
如果输入为数字,则返回true;否则返回false .
或者对于事件键码,以下简单使用:
我也想回答:)
就是这样......只是数字 . :)它几乎可以与'模糊'一起工作,但......
对我来说更简单的是
我根据@ user261922上面的帖子写了我的,略有修改,所以你可以选择全部,选项卡,并可以在同一页面上处理多个“仅限数字”字段 .
只需要在Jquery中应用此方法,您就可以将文本框验证为仅接受数字 .
试试这个解决方案here
这是我使用的功能:
然后,您可以执行以下操作将其附加到您的控件:
您可以使用这个非常简单的解决方案来做同样的事情
我提到了this link的解决方案 . 它完美地工作!
这似乎牢不可破 .
您可能希望允许标签:
需要确保您的数字键盘和标签键也可以正常工作
jQuery
以下脚本中的
inputFilter
插件允许您在文本<input>
上使用 any 种输入过滤器,包括各种数字过滤器 . 这将正确处理复制粘贴,拖放,键盘快捷键,上下文菜单操作,不可键入的键和所有键盘布局 . 作品cross-browser and on mobile, IE 9+ . Note that you still must do server side validation!亲自尝试on JSFiddle .
用法:
您可能希望用于输入过滤的一些正则表达式:
/^-?\d*$/
将输入限制为 integer 数字/^\d*$/
将输入限制为 unsigned integer 个数字/^[0-9a-f]*$/i
将输入限制为 hexadecimal 数字/^-?\d*[.,]?\d*$/
将输入限制为 floating point 数字(允许.
和,
作为小数分隔符)/^-?\d*[.,]?\d{0,2}$/
将输入限制为 currency 值(即最多两位小数)您可能还想使用输入过滤器将输入限制为例如整数值高达1500:
纯JavaScript
实际上并不需要jQuery,你也可以用纯JavaScript做同样的事情 .
亲自尝试on JSFiddle .
HTML 5
HTML 5具有
<input type="number">
的原生解决方案(请参阅specification),但请注意browser support varies . 例如,Firefox(从版本63.0.3开始)仍然允许用户在该字段中输入文本 .亲自尝试on w3schools.com .
更复杂的验证选项
如果你想做一些其他验证的点点滴滴,这可能很方便:
https://github.com/cstaylor/numeric.js/tree/master
http://jstepper.emkay.dk
http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values
function suppressNonNumericInput(event){
这是我前一段时间创建的快速解决方案 . 你可以在我的文章中阅读更多相关内容:
http://ajax911.com/numbers-numeric-field-jquery/
我想帮助一点,我制作了我的版本
onlyNumbers
功能......只需添加输入标签“... input ... id =”price“onkeydown =”return onlyNumbers(event)“...”并且您已完成;)
我认为这对每个人都有帮助
你可以使用像这样的输入事件:
但是,这个代码特权是什么?
适用于移动浏览器(keydown和keyCode有问题) .
它也适用于AJAX生成的内容,因为我们正在使用"on" .
比keydown更好的性能,例如在paste事件上 .
您可以尝试输入HTML5号码:
此输入标记元素现在仅在0到9之间取值,因为min属性设置为0,max属性设置为9 .
有关访问http://www.w3schools.com/html/html_form_input_types.asp的更多信息
我找到了一个非常好的简单解决方案,它不会像其他解决方案那样阻止用户选择文本或复制粘贴 . jQuery风格:)
为什么这么复杂?你甚至不需要jQuery,因为有一个HTML5模式属性:
很酷的是,它在移动设备上显示了一个数字键盘,这比使用更好jQuery的 .
您可以使用此JavaScript函数:
你可以将它绑定到你的文本框,如下所示:
我在 生产环境 中使用上面的,它完美地工作,它是跨浏览器 . 此外,它不依赖于jQuery,因此您可以使用内联JavaScript将其绑定到文本框:
资料来源:http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values
排队:
不引人注目的风格(使用jQuery):
我在内部常见的js文件中使用它 . 我只是将类添加到需要此行为的任何输入 .
使用jQuery.validate相当简单的东西
HTML5中的pattern属性指定了一个正则表达式,该元素的值将被检查 .
注意:pattern属性使用以下输入类型:text,search,url,tel,email和password .
[0-9]可以替换为任何正则表达式条件 .
{1,3}表示最小值为1,最多可输入3位数 .