使用jquery检查* any *字段是否有值?

时间:2012-04-13 19:44:16

标签: javascript jquery forms validation

从这样的事情开始

    $('#report-form').submit( function(){
    if ( ! $('#datetime, :checkbox, :radio, textarea').val() ){
            alert('not posted');
            return false;
        } else  {
            alert('posted');
        }

} );

除非发布任何字段为空,否则我希望它发布,除非所有列出的字段/字段类型为空。有没有办法用选择器字符串执行此操作而不是手动检查每个项目?

我想过运行一个.each()函数,该函数在变量空白时递增变量,并且只在#小于字段数时才提交它,但理想情况下我正在寻找更通用的变量(这将起作用)带有复选框和单选按钮以及文本输入和文本区域。)

3 个答案:

答案 0 :(得分:1)

您可以使用$.grep返回符合条件的元素数组。

如果任何元素都有值,则会从回调中返回true,而length将至少1,强制转换为true

var any = !!$.grep($('#datetime, :checkbox, :radio, textarea'), function(el) { 
    return !!el.value;
}).length;

if (any) {
    // there was at least one
}

另一种可能性是使用属性 - 非等于选择器,但我不推荐它。

if (!!$('input[value!=""]').length)

它声称检查属性,但似乎实际上检查了.value 属性。这对我来说似乎有点儿麻烦。由于文档声称检查属性,我可能会避免它。

答案 1 :(得分:0)

您可以遍历所需的所有输入和textareas,并将变量设置为true(最初设置为false)并在遇到非空输入时中断循环。然后,您只需在循环完成后检查变量是否为真。

答案 2 :(得分:0)

您可以使用方法valid()直接调用验证程序。

$("#myform").validate();
$("a.check").click(function() {
    alert("Valid: " + $("#myform").valid());
    return false;
});