验证所有文本框是JQuery中的数字

时间:2011-08-30 18:43:25

标签: jquery

$('#save').click(function(){
    ($('input[type=text]').each(function () {
        if (isNaN($(this).val())) {
            alert("Some of your values were not entered correctly.");
            return 0;
        }
    });
});

我无法弄清楚为什么这不起作用。有什么建议吗?

编辑:对于误导性标题感到抱歉 - 我需要确保文本框中只包含数字。

2 个答案:

答案 0 :(得分:2)

isNaN函数检查名为NaN [MDN] 的特定值,这是尝试的结果对非数字对象执行算术运算。它不检查字符串是否为数字。正则表达式怎么样?

if (!/^\d+$/.test($(this).val())) {
    // Not a number...
}

以上将接受正整数。如果需要接受负数或浮点数,请将正则表达式更改为:

/^-?\d+$/         <-- Accepts positive and negative integers.
/^\d+(\.\d+)?$/   <-- Accepts positive integers and floating point numbers
/^-?\d+(\.\d+)?$/ <-- Accepts positive and negative integers and fpn.

此外,如果从each内返回0,则会停止循环,但这不会阻止点击事件继续。您有无效数据,需要调用event.preventDefault()来暂停点击事件。这样的事情会做:

$('#save').click(function(event){
    var badInputs = $('input:text').filter(function() { 
        return !$(this).val().match(/^\d+$/);
    };
    if (badInputs.length) {
        alert('Some of your values were not entered correctly.');
        event.preventDefault();
    }
});

工作示例:http://jsfiddle.net/FishBasketGordo/ER5Vj/

答案 1 :(得分:0)

在这篇topic中有很多关于检查JS中数字的讨论。我希望它会有所帮助。