为jQuery验证选择一个异常命名的输入会导致语法错误

时间:2017-09-17 14:18:32

标签: jquery jquery-validate

我正在尝试使用jquery.validate.min.js来验证客户端的输入。

如果输入名称仅为<input name="price">

之类的文本,则此方法很有效

例如:

$("#foo-post-form").validate({
  rules: {
    price: {
      required: true,
      number: true
    }

  }
});
.error {
  color: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>

<form id="foo-post-form">

  <label>price</label>
  <input name="price">

</form>

但是,当我尝试定位像<input name="foo_fields[15536]">

这样的自动生成的输入时

我得到了

  

“未捕获的SyntaxError:意外的令牌[”

$("#foo-post-form").validate({
  rules: {
    foo_fields[15536]: {
      required: true,
      number: true
    }
  }
});
.error {
  color: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>

<form id="foo-post-form">

  <label>custom</label>
  <input name="foo_fields[15536]">

</form>

我无法更改输入的名称。如何选择类似的输入进行验证?

2 个答案:

答案 0 :(得分:1)

请尝试将其括在引号中。 foo_fields[15536]表示数组或对象。

$("#foo-post-form").validate({
 rules: {
  "foo_fields[15536]": {
    required: true,
    number: true
   }
 }
});

答案 1 :(得分:1)

我从未使用过该验证库,但我敢打赌,如果您修改输入对象,它将解决您的问题。以字符串形式输入字段的密钥:'foo_fields[15536]'而不是foo_fields[15536]

$("#foo-post-form").validate({
  rules: {
    'foo_fields[15536]': {
      required: true,
      number: true
    }
  }
});
.error {
  color: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>

<form id="foo-post-form">

  <label>custom</label>
  <input name="foo_fields[15536]">

</form>