从这样的事情开始
$('#report-form').submit( function(){
if ( ! $('#datetime, :checkbox, :radio, textarea').val() ){
alert('not posted');
return false;
} else {
alert('posted');
}
} );
除非发布任何字段为空,否则我希望它发布,除非所有列出的字段/字段类型为空。有没有办法用选择器字符串执行此操作而不是手动检查每个项目?
我想过运行一个.each()函数,该函数在变量空白时递增变量,并且只在#小于字段数时才提交它,但理想情况下我正在寻找更通用的变量(这将起作用)带有复选框和单选按钮以及文本输入和文本区域。)
答案 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;
});