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

Javascript 使用jquery检查*any*字段是否有值?,javascript,jquery,forms,validation,Javascript,Jquery,Forms,Validation,从这样开始 $('#report-form').submit( function(){ if ( ! $('#datetime, :checkbox, :radio, textarea').val() ){ alert('not posted'); return false; } else { alert('posted'); } } ); 除此之外,如果任何字段为空,我

从这样开始

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

} );
除此之外,如果任何字段为空,我不希望不过账,而是希望它过账,除非列出的所有字段/字段类型均为空。是否有一种方法可以使用选择器字符串执行此操作,而不是手动检查每个项目


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

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

您可以使用
$.grep
返回满足条件的元素数组

这里,如果任何元素有一个值,它将从回调返回
true
,并且
长度将至少为
1
,强制为
true

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

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

另一种可能是使用属性not equals选择器,尽管我不推荐使用它

if (!!$('input[value!=""]').length)
它声称检查属性,但似乎实际检查了
.value
属性。对我来说,这辆车似乎有问题。由于文档声明检查属性,我可能会避免它。

您可以使用该方法直接调用验证器

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

为什么不使用jquery validate之类的工具呢?$('#datetime,:checkbox,:radio,textarea')。每个()???都快速浏览了验证文档,没有注意到一种内置的方式来检查“至少必须填写一个字段”