0

从这样的事情开始

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

} );

除了在任何字段为空时不发布,我希望它发布,除非所有列出的字段/字段类型都是空的。有没有办法使用选择器字符串而不是手动检查每个项目?

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

4

3 回答 3

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
}

另一种可能性是使用attribute-not-equals-selector,尽管我不推荐它。

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

它声称检查属性,但似乎实际上检查了.value 属性。这对我来说似乎是错误的。由于文档声称检查属性,我可能会避免它。

于 2012-04-13T19:50:03.560 回答
0

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

于 2012-04-13T19:48:27.057 回答
0

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

$("#myform").validate();
$("a.check").click(function() {
    alert("Valid: " + $("#myform").valid());
    return false;
});
于 2012-04-13T19:50:11.053 回答