在按钮单击时检查整数输入

时间:2010-10-04 01:16:38

标签: javascript

我正在尝试在我的应用程序中使用此Javascript。

function validateQuantity(field)
{
    var value = field.value; //get characters
    //check that all characters are digits, ., -, or ""
    for(var i=0;  i < field.value.length; ++i)
    {
        var new_key = value.charAt(i); //cycle through characters
        if(((new_key <= "0") || (new_key > "9")) &&
            !(new_key == ""))
        {
            alert("Please enter number and greater than 0 only");
            return false;
            break;
        }
        return true;
    }
}

我有一个输入按钮,如下所示

<input class="buttonToLink" type="submit" value="Update" 
       onclick="return validateQuantity(document.getElementById('quantity'))"/>

上面的代码成功地检查了所有字母表的输入,例如“abc”或字母和数字,例如“abcd123”为false。

但是,当我首先放入数字字符以及“123abc”等字母时,它会失败 - 它不会显示警告。

我对代码做了什么错误,如何解决?

3 个答案:

答案 0 :(得分:2)

if (parseInt(new_Key) == new_Key) {
    //valid
} else { // it will return NaN
    //invalid
}

答案 1 :(得分:2)

function validateQuantity(field) {
    if (!/^\d+$/.test(field.value)) { // is an integer
       alert("Please enter number and greater than 0 only");
       return false;
    }

    return true;
}

您的代码不起作用的原因是因为您在循环中有返回true语句。一旦它看到一个有效的整数,它将返回true并退出该函数,忽略它之后的任何内容。允许像“123abc”这样的字符串。

这可能是你想要的:

function validateQuantity(field)
{
    var value = field.value; //get characters
    //check that all characters are digits, ., -, or ""
    for(var i=0;  i < field.value.length; ++i)
    {
        var new_key = value.charAt(i); //cycle through characters
        if(((new_key <= "0") || (new_key > "9")) &&
            !(new_key == ""))
        {
            alert("Please enter number and greater than 0 only");
            return false;
            break;
        }
    }

    return true;
}

答案 2 :(得分:1)

尝试将值解析为整数,并与原始值进行比较。

var isAllNumbers = (parseInt(field.value) == field.value);

也许使用jQuery选择器,并使用正则表达式来测试数字。

var isAllNumbers = $("#quantity").val().match(/\d+$/);