我有一个问题,我一直在寻找一段时间的答案,但无法让它发挥作用.
我正在寻找一种方法来检查是否选中了一组复选框中的至少一个复选框.让我这么难的原因是这些输入中的每一个都有不同的名称值.我只找到了jQuery验证插件等的答案.这是我的html:
Box formFieldrequired"> BoxesBox" name="field129[0]" class="formCheckBox required" value="Something1"> BoxLabel">Something1Box" name="field129[1]" class="formCheckBox required" value="Something2"> BoxLabel">Something2Box" name="field129[2]" class="formCheckBox required" value="Something3"> BoxLabel">Something3 这是我现在的jQuery: // Validate all checkBoxes var named = []; var $requiredCheck = $(this).find('input[type="checkBox"].required'); $($requiredCheck,$formId).each(function() { // Creates an array with the names of all the different checkBox group. named[$(this).attr('name')] = true; }); // Goes through all the names and make sure there's at least one checked. for (name in named) { var $checkBoxes = $("input[name='" + name + "']"); if ($checkBoxes.filter(':checked').length == 0) { $checkBoxes.closest('.formFieldHolder').addClass('error').append('required! 这显然在目前并不完美,因为复选框具有不同的名称值.现在,append打印出与复选框一样多的错误消息.例如,如果有五个复选框,并且选中了一个复选框,则仍会提供四次错误消息.我已经尝试过这么长时间解决这个问题,但根本无法做到这一点.我无法更改这些复选框的名称值,或者只是对html执行任何操作.我认为可以做到的一种方法是删除名称中的最后[0],[1]和[2]部分但我找不到如何让它工作的方法. 我认为简单的jQuery验证方法会失败,因为可能有更多的复选框组,而不是单个表单中的一个.下一组复选框的名称值为name =“field130 [0]”,name =“field130 [1]”和name =“field130 [2]”.我希望你能明白我的观点. 任何帮助将非常感激. 编辑: 添加了一个表单中可能有多个复选框组的说明 最佳答案 你这样做太复杂了:) if ($('.required:checked').length > 0) { // the "> 0" part is unnecessary,actually [do something] } 请参阅the official jQuery API page for :checked上的第一个示例. 回应你的评论 如果页面上有多个表单,则可以将表单指定为容器: if ($('#form1_id').find('.required:checked').length) {... 测试多种形式 为每个表单提供类testable_form. $('.testable_form').each(function() { if ($(this).find('.required:checked').length) { [do something - set a flag,add a class...] } }); 原文链接:https://www.f2er.com/html/426428.html checkboxcheckbox 上一篇:html – css3圆形图像不起作用下一篇:HTML – 如何绘制对角线div? 猜你在找的HTML相关文章 elasticsearch扩展ik分词器词库 操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.di... 作者:前端之家 时间:2021-02-13 echarts中legend如何换行 lengend data数据中若存在'',则表示换行,用''切割。 作者:前端之家 时间:2021-02-13 Echart常用效果(一) 代码实现 option = { backgroundColor: '#080b30', tooltip: { t... 作者:前端之家 时间:2021-02-13 freemarker中js里面取字符串,换行导致报错的解决办法 问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var d... 作者:前端之家 时间:2021-02-13 Freemarker + xml 实现Java导出word 前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种... 作者:前端之家 时间:2021-02-13 【前端JSP思考】JSP中#{},${}和%{}的区别 JSP中#{},${}和%{}的区别: # #{}:对语句进行预编译,此语句解析的是占位符?,可以防止SQ... 作者:前端之家 时间:2021-02-10 【前端HTML】常用标签及属性 对于很多人来说,用HTML标签都是熟能生巧,而不清楚为什么是那样的标签,所以我在这列了一... 作者:前端之家 时间:2021-02-10 [前端]GOFLY项目-响应式登录页的设计和实现 登录界面如果要实现响应式 , 需要注意宽度的设置和media query的使用 宽度一般都是按百分比... 作者:前端之家 时间:2021-02-05 [前端] 设定为disabled的表单域值不能被提交 表单中的某个表单域被设定为disabled,则该表单域的值就不会被提交。 但是我们需要提交这个... 作者:前端之家 时间:2021-02-05 [前端] 代码中执行绑定元素的指定事件trigger方法 前面业务里有个搜索功能 , 入口比较深 , 现在想要把入口挪到有公共header的地方 , 在不想完... 作者:前端之家 时间:2021-02-05 编程分类 HTMLHTML5JavaScriptCSSjQueryBootstrapAngularjsTypeScriptVueDojoJsonElectronNode.jsextjsExpress XMLES6AjaxFlashUnityReactFlexAnt DesignWeb前端微信小程序微信公众号 最新文章 • elasticsearch扩展ik分词器 • echarts中legend如何换行 • Echart常用效果(一) • freemarker中js里面取字符 • Freemarker + xml 实现Jav • 【前端HTML】常用特殊字符 • 【前端JSP思考】JSP中#{}, • 【前端HTML】常用标签及属 • [前端]GOFLY项目-响应式登 • [前端] 设定为disabled的表 热门标签 更多 ► 关闭广告单独headers封装代码提示错误整数正则非0开头跳页出页码antd table提示URL未注册公众号支付vue hash模式iSlider车牌键盘循环图片echarts 双折左右布局DllPlugin对象创建打字游戏圈选两栏云函数蒙版ES2020橱窗无缝滚动轮播色块碰撞组件销毁文档操作
这是我现在的jQuery:
// Validate all checkBoxes var named = []; var $requiredCheck = $(this).find('input[type="checkBox"].required'); $($requiredCheck,$formId).each(function() { // Creates an array with the names of all the different checkBox group. named[$(this).attr('name')] = true; }); // Goes through all the names and make sure there's at least one checked. for (name in named) { var $checkBoxes = $("input[name='" + name + "']"); if ($checkBoxes.filter(':checked').length == 0) { $checkBoxes.closest('.formFieldHolder').addClass('error').append('required!
这显然在目前并不完美,因为复选框具有不同的名称值.现在,append打印出与复选框一样多的错误消息.例如,如果有五个复选框,并且选中了一个复选框,则仍会提供四次错误消息.我已经尝试过这么长时间解决这个问题,但根本无法做到这一点.我无法更改这些复选框的名称值,或者只是对html执行任何操作.我认为可以做到的一种方法是删除名称中的最后[0],[1]和[2]部分但我找不到如何让它工作的方法.
我认为简单的jQuery验证方法会失败,因为可能有更多的复选框组,而不是单个表单中的一个.下一组复选框的名称值为name =“field130 [0]”,name =“field130 [1]”和name =“field130 [2]”.我希望你能明白我的观点.
任何帮助将非常感激.
编辑:
添加了一个表单中可能有多个复选框组的说明
if ($('.required:checked').length > 0) { // the "> 0" part is unnecessary,actually [do something] }
请参阅the official jQuery API page for :checked上的第一个示例.
回应你的评论
如果页面上有多个表单,则可以将表单指定为容器:
if ($('#form1_id').find('.required:checked').length) {...
测试多种形式
为每个表单提供类testable_form.
$('.testable_form').each(function() { if ($(this).find('.required:checked').length) { [do something - set a flag,add a class...] } });