Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery检查表单是否有输入元素_Javascript_Jquery_Forms_Validation_Submit - Fatal编程技术网

Javascript 使用jQuery检查表单是否有输入元素

Javascript 使用jQuery检查表单是否有输入元素,javascript,jquery,forms,validation,submit,Javascript,Jquery,Forms,Validation,Submit,我正在使用Yii-PHP框架开发一个应用程序,并使用jQuery进行表单验证。我有一个页面,上面有一个表单,其中包含输入元素的复选框 但是,这些复选框是根据条目动态创建的 为了更好地理解它,我制作了一个交叉矩阵,基本上是一个表,有行表示男性,列表示男性,并在有交叉的单元格中定义复选框。字面上是男性和女性个体的交叉矩阵 但是,如果没有定义为杂交的雄性和雌性,那么对于验证,不应允许用户提交。 我的问题是如何知道表单是否没有元素 如果有checkbox元素,我如何捕获用户是否至少选中了其中一个 这是

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

但是,这些复选框是根据条目动态创建的

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

但是,如果没有定义为杂交的雄性和雌性,那么对于验证,不应允许用户提交。

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

如果有checkbox元素,我如何捕获用户是否至少选中了其中一个


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

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

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

});

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

$('#crossingMatrixForm').submit(function(){    
    if (!$(this).find("input:checked").length) {
        alert("form empty!");
        return false;
    }
});
如果要消除“不存在复选框”和“至少存在一个复选框,但未选中任何复选框”之间的歧义,可以使用
$(此项)。对于前者,查找(“:checkbox”)
,对于后者,查找(“:checkbox”)。在这两种情况下,使用
.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;
    }
});
根据:
empty()
是:

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

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

jQuery允许您测试字段以及是否有字段。因此,有了这些,您可以尝试以下方法:

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

谢谢你,先生,我不再需要在这两种情况之间消除歧义了