我正在使用Yii PHP框架开发一个应用程序,我正在使用jQuery进行表单验证。我有一个带有表单的页面,其中包含复选框的输入元素。
但是,这些复选框是动态创建的,具体取决于条目。
为了更好地理解它,我正在制作一个交叉矩阵,基本上是一个表,为男性提供行,为男性设置列,并在其中定义复选框有交叉点的单元格。字面上是男性和女性个体的交叉矩阵。
但是,如果没有男性和女性被定义为已经过了,那么对于验证,它不应该允许用户提交。
我的问题是如何知道表单是否没有元素?
如果有复选框元素,我如何识别用户是否至少检查过其中一个?
这是我尝试过的,但它似乎没有抓住它,表单仍然提交数据,我想知道为什么:
$('#crossingMatrixForm').submit(function() {
$(":input").each(function() {
if ($(this).val() === empty()) {
alert("form empty!");
return false;
}
});
});
答案 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)
根据Documentation:empty()
是:
Description: Remove all child nodes of the set of matched elements from the DOM.
因此,您必须使用" "
来比较字符串。
答案 2 :(得分:1)