2013-09-30 52 views
3

我正在Yii php中開發應用程序,並且我正在使用jquery進行表單驗證。我有一個表格CrossingMatrixForm其中包含複選框的輸入元素。檢查表單是否有使用jquery的輸入元素

但是,這些複選框是根據條目動態創建。

爲了更好地理解它,我正在做的交叉矩陣,表基本上具有行(雌性)和男性(列),並且限定在存在交點細胞複選框。字面上是男性和女性的交叉矩陣。

但是,如果有沒有男性和女性被定義爲尚未交叉,那麼至於驗證,它不應該允許用戶提交。

我的問題是我如何知道表格中是否沒有元素?

如果有複選框元素,如何捕捉用戶是否檢查了其中的至少一個?非常感謝!

我在下面試過但似乎沒有抓住它,表單仍然提交,我想知道。

$('#crossingMatrixForm').submit(function(){ 

     $(":input").each(function() { 
      if($(this).val() === empty()){ 
      alert("form empty!"); 
      return false; 
      } 
     }); 


}); 

回答

4

你可以看到,如果在表格中至少存在一個複選框,如果你想與「不復選框存在」和「至少一個存在的歧義與

$('#crossingMatrixForm').submit(function(){  
    if (!$(this).find("input:checked").length) { 
     alert("form empty!"); 
     return false; 
    } 
}); 

檢查,但沒有被檢查「,前者可以使用$(this).find(":checkbox"),後者可以使用.filter(":checked")。在這兩種情況下,使用.length看是否至少一個控制存在:

$('#crossingMatrixForm').submit(function(){  
    var checkboxes = $(this).find(":checkbox"); 
    if (!checkboxes.length) { 
     alert("form empty!"); 
     return false; 
    } 
    else if (!checkboxes.filter(":checked").length) { 
     alert("none selected!"); 
     return false; 
    } 
}); 
+0

謝謝先生,我不再需要在兩種情況之間消除歧義 – muffin

2

Documentationempty()是:

Description: Remove all child nodes of the set of matched elements from the DOM. 

所以,你必須使用" "比較字符串。

1

jQuery允許您測試:checkbox字段以及是否有任何:checked。因此,對於那些在手的人,您可以嘗試以下方法:

$('#crossingMatrixForm').submit(function(){ 
    var $this = $(this); 
    if (!$this.find('input:checkbox').length || !$this.find('input:checked').length) { 
     alert('Form empty!'); 
     return false; 
    } 
});