1

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

4

3 回答 3

4

最简单的方法是将文本解析为数字,强制转换为整数,并查看它们是否相等:

var numbertxt5 = Number(txt[5]);
if(numbertxt5 | 0 == numbertxt5) { /* int */
} else if (!isNaN(numbertxt5)) { /* float */
} else { /* not a number */
于 2013-10-20T19:26:27.603 回答
3
txt[5] = parseInt($(this).parents('p').find('input:text').val(), 10);

这不会验证数字(请参阅Nirk 的答案),但如果它不是 int,它将被转换为一个。

于 2013-10-20T19:12:23.253 回答
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. 查看此页面以供参考http://www.w3schools.com/jsref/jsref_parseint.asp

于 2013-10-20T19:13:36.587 回答