使用 jQuery 检查表单是否具有输入元素
Checking if a form has input elements using jQuery
我正在使用Yii PHP框架开发一个应用程序,并且正在使用jQuery进行表单验证。我有一个带有表单的页面,其中包含其输入元素的复选框。
但是,这些复选框是根据条目动态创建的。
为了更好地理解它,我正在制作一个交叉矩阵,基本上是一个表格,有男性的行和男性的列,并在有交集的单元格中定义复选框。从字面上看,是男性和女性个体的交叉矩阵。
但是,如果还没有定义为交叉的男性和女性,那么至于验证,它不应该允许用户提交。
我的问题是我怎么知道表单是否没有元素?
如果有复选框元素,我如何捕获用户是否至少选中了其中一个元素?
这是我尝试过的,但它似乎没有抓住它,表格仍然提交数据,我想知道为什么:
$('#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;
}
});
如果您想消除"不存在复选框"和"至少存在一个复选框,但没有选中"之间的歧义,您可以将$(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;
}
});
根据文档: empty()
是:
Description: Remove all child nodes of the set of matched elements from the DOM.
因此,您必须使用 " "
来比较字符串。
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;
}
});
相关文章:
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 访问代码生成的输入元素上的keyup事件
- 使用 jQuery,当我在输入框外部单击时,如何更改输入元素的值
- 使用jQuery切换来显示内容,但防止在用户单击输入元素时关闭
- 如何使用角度事件处理程序引用输入元素的值
- 获取javascript中输入元素的索引
- 为什么Bootstrap typeahead不适用于具有相同ID的输入元素
- 如何使用javascript在输入元素中显示特殊字符
- 动态添加的输入元素不会在脚本中返回值
- 使用 jQuery 禁用除表单中的某些输入元素之外的所有输入元素
- 将焦点设置为输入元素角度 js
- 如何仅在输入元素具有焦点时才启动 setInterval
- 即使使用 parseInt,我也无法从输入元素中获取数值
- 通过应用自定义 css 类禁用 html 输入元素
- 聚合物 - 访问自定义元素内的 DOM 输入元素
- HTML-输入元素中不可删除的占位符
- 使用jquery将属性附加到输入元素
- 如果所有其他元素都填写在AngularJS中,如何动态添加新的输入元素
- 什么是输入元素上的innerHTML
- 输入元素模式属性的Javascript正则表达式在reFiddle上有效,但在页面上无效