如何在jQuery Validate Engine上执行minCheckBox验证?

时间:2019-02-25 20:15:48

标签: javascript jquery jquery-validation-engine

在具有三个复选框的表单中,我需要验证至少其中一个已被选中。我工作的公司正在使用jQuery Validation Engine。我正在测试最新版本。

根据库要求,我的代码应类似于:

<input type="checkbox" name="agreement" value="1" id="agreement_0" class="validate[minCheckbox[1]] checkbox">
<input type="checkbox" name="agreement" value="1" id="agreement_1" class="validate[minCheckbox[1]] checkbox">
<input type="checkbox" name="agreement" value="1" id="agreement_2" class="validate[minCheckbox[1]] checkbox">

如果我这样做的话,确实可以进行验证,并且至少需要其中之一,但是我的$_POST仅包含其中的最后一个,我想这是因为它们共享相同的名称(我认为这是错误)。这是minCheckbox的文档。

如果我改用以下方法(据我所知是正确的),那么我将遇到Javascript错误:

<input type="checkbox" name="agreement[]" value="1" id="agreement_0" class="validate[minCheckbox[1]] checkbox">
<input type="checkbox" name="agreement[]" value="1" id="agreement_1" class="validate[minCheckbox[1]] checkbox">
<input type="checkbox" name="agreement[]" value="1" id="agreement_2" class="validate[minCheckbox[1]] checkbox">
  

未捕获的错误:语法错误,无法识别的表达式:   输入[名称=协议[]]

底线:

  • 采用第一种方法时,验证确实可以正常工作,但是发布表单后,我只会得到最后输入的值。
  • 使用第二种方法时,验证失败并出现Javascript错误,但我应该获取数组agreement[]上的所有输入。

我在这里错过了什么吗?您将如何使用jQuery Validation Engine进行此验证?

注意:如果需要,我可以提供更多详细信息,并且目前无法更改库。

1 个答案:

答案 0 :(得分:0)

对我很好,我想念什么吗?

$('form').validationEngine();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.4/jquery-1.8.2.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.4/jquery.validationEngine.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.4/languages/jquery.validationEngine-en.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.4/validationEngine.jquery.css"/>

My Form
<form>
  <input type="checkbox" name="agreement[]" value="1" id="agreement_0" class="validate[minCheckbox[1]] checkbox">A
  <input type="checkbox" name="agreement[]" value="1" id="agreement_1" class="validate[minCheckbox[1]] checkbox">B
  <input type="checkbox" name="agreement[]" value="1" id="agreement_2" class="validate[minCheckbox[1]] checkbox">C
</form>