2010-08-17 113 views
0

当按钮被点击时,我有一个包含4个文本字段的表单 我们应该看到至少有一个文本字段应该包含值并且表单应该得到提交 和形式也包含了输入型的太。我只想要文本字段值如何使用jquery遍历表单中的文本框元素

$("#mybutton").click(function(){ 

$(":input").each(function(){ 
    if($(this).value!=''){ 
    $("#myform").submit(); 

} 

}); 
}); 

回答

6

可以使用:text的选择,.filter()到那些具有价值和检查.length,就像这样:

$("#mybutton").click(function(){ 
    if($(":text").filter(function(){ return this.value!=''; }).length) 
    $("#myform").submit(); 
}); 

此检查任何不是空的,如果是这样,请提交表单一次。


及这里的上<form>提交检查的替代,Doug的评论称赞:

$("#myform").submit(function(){ 
    if(!$(":text").filter(function(){ return this.value!=''; }).length) 
    return false; 
}); 
+0

我仍然会绑定到'提交'而不是按钮点击,但过滤器是一个非常好的触摸! – 2010-08-17 17:23:34

+0

不错的更新。我已经+1了,或者我会再次这么做:) – 2010-08-17 17:26:53

+0

我只想提交,如果有至少一个字段输入 – Someone 2010-08-17 17:37:38

1

尝试了这一点的按钮。我已将:input选择器替换为:text以仅获取文本框。你也打电话.value jquery对象,而不是使用.val()方法。

$("#mybutton").click(function() { 
    $(":text").each(function() { 
     if($(this).val() !='') { 
      $("#myform").submit(); 
      return false; 
     } 
    }); 
}); 
+0

像@ joshperry的原来的答案,这可能多次提交表单。 – 2010-08-17 17:26:08

+1

@Doug Neiner - 谢谢,我已经更新了我的答案,以便返回false以突破每条语句。 – 2010-08-17 17:28:37

1

使用input:text选择器来获取所有文本框。

$("input:text") 
+2

这将提交表单多次:) – 2010-08-17 17:23:40

+0

谢谢,我猜他的代码有缺陷。我回答了没有做代码审查的问题...... – joshperry 2010-08-17 17:26:01

+0

您可以在每次迭代中添加一个“return false”,并且jquery将自动将其视为与传统循环中的“break”相同。 – 2010-08-17 17:30:51

3

首先,结合form提交不点击按钮。如果用户在外地打enter/return,它会提交表单,而不检查:

$("form").submit(function (e) { 
    var fields = $(this).find(':text'), 
     cancel = true; 

    fields.each(function (i, el) { 
    if (el.value) { 
     cancel = false; 
     return false; // exit this loop 
    } 
    }); 

    if (cancel) { 
    e.preventDefault(); // cancel submit since all fields are blank 
    }  
}); 
+0

+1表单提交活动建议 – joshperry 2010-08-17 17:35:06