首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQuery:获取一系列要验证的复选框

JQuery:获取一系列要验证的复选框
EN

Stack Overflow用户
提问于 2019-03-13 07:35:09
回答 2查看 46关注 0票数 1

我正在尝试将一组复选框作为我在WordPress的管理区域创建的整体表单的一部分进行验证。基本上,是自定义字段。下面是代码的样子:

代码语言:javascript
运行
复制
<div><label><input type="checkbox" value="0-2"  name="_ecp_custom_5[]" /> 0-2</label></div>
<div><label><input type="checkbox" value="3-5"  name="_ecp_custom_5[]" /> 3-5</label></div>
<div><label><input type="checkbox" value="6-8"  name="_ecp_custom_5[]" /> 6-8</label></div>

诸如此类……

所以我的JavaScript里有这个:

代码语言:javascript
运行
复制
jQuery(document).ready(function($) {
    $('[name="_ecp_custom_3"]').attr("required", true);
    $('[name="_ecp_custom_5[]"]').prop("checked", true);
});

文本字段的第一行,效果很好。但下面选中的那个根本不起作用。如果我提交表单时没有选中任何复选框,表单仍然会发布,当表单返回时,所有字段都会被选中,即使我没有选中任何字段。

我不知道该怎么做,因为在这个验证函数中会有几个规则。

EN

回答 2

Stack Overflow用户

发布于 2019-03-13 09:29:03

如果您使用的是html:

html元素名称和id不能包含特殊字符,例如[ ],并且必须以字母(A-Z)、(a-z)开头。

除此之外,您的jQuery引用了一个带有name=_ecp_custom_5而不是name=_ecp_custom_5[]的元素。只需删除名称中的[],您的代码就可以正常工作。

更新

$('[name=foo]').prop("checked", true)all复选框设置为选中的name=foo。我对您在这一点上所问的问题有点困惑,因为您似乎对为什么表单提交所有复选框输入都是选中的感到困惑?

票数 0
EN

Stack Overflow用户

发布于 2019-03-13 14:00:00

您希望要求至少选中一个复选框,对吗?

可以使用jQuery.each()迭代具有"_ecp_custom_5[]"名称属性值的所有输入。这样,您就可以创建将在任何条件下使用的任何标志变量。

如果你不能理解我想要说的话,请参考下面的片段。

如果您希望要求至少选中一个复选框,则可以使用此示例作为基础

代码语言:javascript
运行
复制
$(function() {
  $('#btnValidate').click(function() {
    var flag = false;

    $.each($('[name="_ecp_custom_5[]"]'), function(index, value) {
      var checkboxStatus = $(this).prop('checked');

      if (checkboxStatus == true) {
        flag = checkboxStatus;
      }
    });

    if (flag == false) {
      alert('No checkbox has been checked')
    } else {
      alert('Success!')
    }
  });
});
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <label>
    <input type="checkbox" value="0-2"  name="_ecp_custom_5[]" /> 0-2
  </label>
</div>
<div>
  <label>
    <input type="checkbox" value="3-5"  name="_ecp_custom_5[]" /> 3-5
  </label>
</div>
<div>
  <label>
    <input type="checkbox" value="6-8"  name="_ecp_custom_5[]" /> 6-8
  </label>
</div>

<button id="btnValidate" style="margin-top: 20px;">Validate</button>

我是怎么做到的?

我使用"_ecp_custom_5[]".的name属性值迭代了所有输入

然后,我创建了一个名为“”(默认值为false)的布尔变量,仅当迭代中的复选框的属性(‘’)值为true时,该变量才会被更改为true。如果没有选中任何复选框,那么“”变量的值将保持为false,然后将由我的条件选中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55132220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档