2013-09-30 53 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; 
    } 
});