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

Selecting an unusually named input for jQuery validation leads to syntax error

我正在尝试使用 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]">

我明白了

"Uncaught SyntaxError: Unexpected token ["

$("#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>

我无法更改输入的名称。我怎样才能 select 这样的输入进行验证?

尝试用引号括起来。 foo_fields[15536] 表示数组或对象。

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

我从未使用过该验证库,但我敢打赌,如果您修改输入对象,它会解决您的问题。以字符串形式输入该字段的键:'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>