我有一个简单的textbox
用户输入号码。
jQuery是否有一个isDigit
函数,允许我显示一个警告框,如果用户输入数字以外的东西?检查输入的号码是否是jquery中的数字
该字段也可以有小数点。
我有一个简单的textbox
用户输入号码。
jQuery是否有一个isDigit
函数,允许我显示一个警告框,如果用户输入数字以外的东西?检查输入的号码是否是jquery中的数字
该字段也可以有小数点。
我会建议使用正则表达式:
var intRegex = /^\d+$/;
var floatRegex = /^((\d+(\.\d *)?)|((\d*\.)?\d+))$/;
var str = $('#myTextBox').val();
if(intRegex.test(str) || floatRegex.test(str)) {
alert('I am a number');
...
}
或用单正则表达式按照@Platinum Azure的建议:
var numberRegex = /^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/;
var str = $('#myTextBox').val();
if(numberRegex.test(str)) {
alert('I am a number');
...
}
该数字也可以有小数。 5001.10应该可以接受 – Omnipresent 2009-08-13 15:28:51
@Omnipresent - 对不起,但你确实说过isDigit,我会编辑。 – karim79 2009-08-13 15:31:06
应该指定。 :-)你可以使用像这样的正则表达式来表示所有(很多)可能的数字:'/^[+-]?\d+(\.\d+)?([eE][+-]?\d+)? $ /'这将允许小数,符号,甚至科学记数法结束,如果你想。您可以根据需要删除各种部分(如果您需要帮助确定哪部分是什么,但它应该相当直观),则可以使用Google Perl风格的正则表达式。 – 2009-08-13 15:31:17
jQuery的是一组JavaScript函数,对不对?所以你可以使用JavaScript的正则表达式支持来验证字符串。如果你喜欢,你可以把它放在一个jQuery回调函数中,因为它们只需要匿名声明的函数体,而且函数仍然是JavaScript。
值验证不会是jQuery的的责任。你可以使用纯JavaScript来做到这一点。我想到的两种方法是:
/^\d+$/.match(value)
Number(value) == value
既然你的第二个例子使用==而不是===,那么不会在右侧输入强制,导致表达式始终为真? – 2009-08-13 15:39:50
不知道为什么没有人提出这个答案。我用数字(价值)....它的完美。 – 2016-07-10 06:50:05
@systemPAUSE提及用户输入和“数字”让我觉得这个值是一个字符串和== ==的原因。 – 2016-07-11 02:19:48
忘记正则表达式。 JavaScript有这样的内置函数:isNaN()
:
isNaN(123) // false
isNaN(-1.23) // false
isNaN(5-2) // false
isNaN(0) // false
isNaN("100") // false
isNaN("Hello") // true
isNaN("2005/12/12") // true
只是把它就像这样:
if (isNaN($("#whatever").val())) {
// It isn't a number
} else {
// It is a number
}
isNaN不会确保您的输入不包含空格。 isNaN(“42”)=== false – 2009-08-13 15:38:34
您可以使用类似于以下内容修剪空白:YouValue.replace(/^\ s \ s * /,'').replace(/ \ s \ s * $ /,'' ); 更多修剪实现:http://blog.stevenlevithan.com/archives/faster-trim-javascript – doomspork 2009-08-13 15:41:59
有趣的方法,但个人而言,我认为正则表达式比双重否定更清晰(不是非数字是一个数字)。尽管我倾向于将正则表达式放入一个很好的实用函数isDigit()中。 – 2009-08-13 15:47:02
使用jQuery的validation插件,你可以做这样的事情,假设形式被称为形式并且要验证的值被称为nrInput
$("form").validate({
errorElement: "div",
errorClass: "error-highlight",
onblur: true,
onsubmit: true,
focusInvalid: true,
rules:{
'nrInput': {
number: true,
required: true
}
});
这也处理十进制值。
有一种更简单的方法来检查变量是否是整数。你可以使用$ .isNumeric()函数。例如
$.isNumeric(10); // true
这将返回true,但如果您将一个字符串替换为10,您将得到false。
我希望这对你有用。
以下脚本可用于检查值是否为有效整数。
function myFunction() {
var a = parseInt("10000000");
if (!isNaN(a) && a <= 2147483647 && a >= -2147483647){
alert("is integer");
} else {
alert("not integer");
}
}
String.prototype.isNumeric = function() {
var s = this.replace(',', '.').replace(/\s+/g, '');
return s == 0 || (s/s);
}
使用
'9.1'.isNumeric() -> 1
'0xabc'.isNumeric() -> 1
'10,1'.isNumeric() -> 1
'str'.isNumeric() -> NaN
$(document).ready(function() {
$("#cust_zip").keypress(function (e) {
//var z = document.createUserForm.cust_mobile1.value;
//alert(z);
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
$("#errmsgzip").html("Digits Only.").show().fadeOut(3000);
return false;
}
});
});
您还可以添加解释而不是发布代码吗? – namezero 2015-07-03 06:46:15
var yourfield = $('fieldname').val();
if($.isNumeric(yourfield)) {
console.log('IM A NUMBER');
} else {
console.log('not a number');
}
JQUERY DOCS:
所以你的意思是*号*和*不*数字? – 2014-09-16 19:33:52