检测jquery中的数字是INT还是FLOAT

时间:2013-10-20 19:10:07

标签: javascript jquery

我目前正在输入一个文本框和提交,我正在验证输入,输入需要是一个大于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,但我愿意接受新的答案。

3 个答案:

答案 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,但它的行为一样。但是,您可以使用两种方法来处理此parseIntparseFloat

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