jQuery验证:输入名称值

时间:2018-05-28 14:00:24

标签: javascript jquery ruby-on-rails jquery-validate

我正在尝试为表单添加验证

$('#reportForm').validate({
    rules: {
      'report[invoices_attributes][0][invoice_type]' :
  {
    required: true,
    'report[invoices_attributes][0][invoice_type]':true

  }
  }
  });

reportForm是我表单的ID。我的所有输入字段名称值都将类似'report[invoices_attributes][indexnr]...'(因为我使用的是嵌套属性,并且可以有0个或更多元素)

为此,我希望将所有输​​入名称值与正则表达式匹配,如:/^report\[invoices_attributes\]\[[0-9]\](.*)/

如何将其添加到输入名称值(当前为'report[invoices_attributes][0][invoice_type]')的规则字段中,以匹配我感兴趣的所有字段?

1 个答案:

答案 0 :(得分:0)

首先,我会entirely avoid Allman style code formatting in JavaScript

rules的{​​{1}}对象内声明规则时,您一次只能将规则声明为一个字段...

.validate()

如果要在多个字段上声明,请使用$('#reportForm').validate({ rules: { 'report[invoices_attributes][0][invoice_type]': { required: true, }, 'report[invoices_attributes][1][invoice_type]': { required: true, }, 'report[invoices_attributes][2][invoice_type]': { required: true, }, // etc. } }); 方法以及jQuery .rules()和任何适合您的组的jQuery选择器。

.each()

您也不能拥有一个布局,其中所有被验证的字段共享相同的$('.myfields').each(function() { $(this).rules('add', { required: true }); }); 属性。 每个字段必须具有唯一的name或单个"分组"复选框/单选按钮可以共享name没有解决方法。

如果您只需要可以通过布尔值声明的基本规则,那么您可以使用内联属性而不是name方法或.rules()对象。

rules

或者按班级......

<input name="foo" required="required" ....

更多信息:https://stackoverflow.com/a/9056425/594235