jquery验证插件和复选框的帮助

jquery验证插件和复选框的帮助,jquery,jquery-validate,Jquery,Jquery Validate,我有一个复选框组,需要对其进行唯一命名,以便在数据库中单独存储值。 但是,使用jquery验证插件,我无法验证名称不同的组 <label>Would you like to compete?</label> <input type="checkbox" name="compete1" value="2" class="competecheckbox" > <label for="compete_no">No</lab

我有一个复选框组,需要对其进行唯一命名,以便在数据库中单独存储值。 但是,使用jquery验证插件,我无法验证名称不同的组

<label>Would you like to compete?</label>
      <input type="checkbox"  name="compete1" value="2" class="competecheckbox" >
      <label for="compete_no">No</label>
      <input type="checkbox" name="compete2" value="1" class="competecheckbox">
      <label for="compete_yes">Yes</label>
      <div id="competeyes">
        <label class="competeyestxt" hidden=true>Which Location?</label>
        <textarea rows="4" cols="40" maxlength="2000" name="competeyestextarea" class="competeyestxt" hidden="true">
        </textarea>
      </div>
这种方式可以工作,但它显示了两条错误消息。 每个匹配类“competecheckbox”对应一个

问题是,即使用户选择compete1,compete2仍会保留验证错误消息

当用户选择至少一个复选框时,如何清除这两条消息


谢谢

我会为此使用
选项。此选项允许您对所需的
输入进行分组:

$("#form").validate({
    groups: {
        competecheckbox: "compete1 compete2"
    },
    errorPlacement: function ($error, $element) {
        if ($element.attr("name") === "compete1" || $element.attr("name") === "compete2") {
            $error.insertAfter("label[for='compete_yes']");
        } else {
            $error.insertAfter($element);
        }
    }
});
示例:


注意事项:

  • errorPlacement
    用于确定消息是否为分组字段之一。如果是,则在“是”复选框后插入错误(这很容易更改)。否则,它将在元素后采用其默认位置
  • groups
    选项用于指定名为
    competecheckbox
    的组,其中包括
    compete1
    compete2
    。这两个字段一起进行验证

我的结局是这样的:

 <label>Would you like to compete?</label>
      <input type="checkbox"  name="compete[]" value="2" class="competecheckbox" >
      <label for="compete_no">No</label>
      <input type="checkbox" name="compete[]" value="1" class="competecheckbox">
      <label for="compete_yes">Yes</label>
      <div id="competeyes">
        <label class="competeyestxt" hidden=true>Which Location?</label>
        <textarea rows="4" cols="40" maxlength="2000" name="competeyestextarea" class="competeyestxt" hidden="true">
        </textarea>
      </div>


When the form is submitted you get values in an array as compete[1], compete[2] etc.
I didn't know that you could do an empty array for form variable names.
Every day I find out how ignorant I am :)

我使用了一些类似的东西,它也在工作,但至少在我的情况下,我不能在字段名称中使用[]。如何在不使用阵列的情况下实现这一点?谢谢:)
 <label>Would you like to compete?</label>
      <input type="checkbox"  name="compete[]" value="2" class="competecheckbox" >
      <label for="compete_no">No</label>
      <input type="checkbox" name="compete[]" value="1" class="competecheckbox">
      <label for="compete_yes">Yes</label>
      <div id="competeyes">
        <label class="competeyestxt" hidden=true>Which Location?</label>
        <textarea rows="4" cols="40" maxlength="2000" name="competeyestextarea" class="competeyestxt" hidden="true">
        </textarea>
      </div>


When the form is submitted you get values in an array as compete[1], compete[2] etc.
I didn't know that you could do an empty array for form variable names.
Every day I find out how ignorant I am :)
$('#survey').validate( {
    rules: {
        "compete[]": {
            required: true,
            minlength: 1
        }
  });

The quotes around "compete[]" are required as explained here: