使用jQuery检查表单是否包含输入元素

时间:2013-09-30 08:21:58

标签: javascript jquery forms validation submit

我正在使用Yii PHP框架开发一个应用程序,我正在使用jQuery进行表单验证。我有一个带有表单的页面,其中包含复选框的输入元素。

但是,这些复选框是动态创建的,具体取决于条目。

为了更好地理解它,我正在制作一个交叉矩阵,基本上是一个表,为男性提供,为男性设置,并在其中定义复选框有交叉点的单元格。字面上是男性和女性个体的交叉矩阵。

但是,如果没有男性和女性被定义为已经过了,那么对于验证,它不应该允许用户提交。

我的问题是如何知道表单是否没有元素?

如果有复选框元素,我如何识别用户是否至少检查过其中一个?


这是我尝试过的,但它似乎没有抓住它,表单仍然提交数据,我想知道为什么:

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

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

});

3 个答案:

答案 0 :(得分:5)

您可以查看表单中是否至少存在一个复选框,并使用

进行检查
$('#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;
    }
});

答案 1 :(得分:2)

根据Documentationempty()是:

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

因此,您必须使用" "来比较字符串。

答案 2 :(得分: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;
    }
});
相关问题