我目前正在输入一个文本框和提交,我正在验证输入,输入需要是一个大于0的数字,它应该是整数而不包含小数点。问题是我无法找到任何可以检测到它是整数还是包含小数点的方法。这是我正在使用的代码。
txt[5] = $(this).parents('p').find('input:text').val();
if (txt[5] == "" || isNaN(txt[5]) || txt[5] <= 0)
{
alert("Incorrect Quantity");
return false;
}
基本上,当您看到我正在验证用户提供的输入时,如果输入错误,我想向他们显示一条消息,所以我目前正在使用 txt [5]%1!= 0 确保只允许使用INT,但我愿意接受新的答案。
答案 0 :(得分:4)
最简单的方法是将文本解析为数字,强制转换为整数,并查看它们是否相等:
var numbertxt5 = Number(txt[5]);
if(numbertxt5 | 0 == numbertxt5) { /* int */
} else if (!isNaN(numbertxt5)) { /* float */
} else { /* not a number */
答案 1 :(得分:3)
txt[5] = parseInt($(this).parents('p').find('input:text').val(), 10);
这不会验证数字(请参阅Nirk's answer),但如果它不是int,则会转换为1。
答案 2 :(得分:3)
这是因为JavaScript只有一种名为number
的数字类型。它既不是int
也不是float
,但它的行为一样。但是,您可以使用两种方法来处理此parseInt
和parseFloat
。
var result = parseInt($(this).parents('p').find('input:text').val());
txt[5] = result;
使用parseFloat
是类似的。例如
var result = parseFloat($(this).parents('p').find('input:text').val());
txt[5] = result;
第二个例子不是你想要的,但它只是供你参考。
更新:@bfavaretto使用我在parseInt
中省略的 radix 提出了一个很好的观点。请查看此页面以获取参考http://www.w3schools.com/jsref/jsref_parseint.asp