2010-08-17 57 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