验证失去了对多维数组的关注

时间:2015-09-28 16:54:55

标签: jquery ajax jquery-validate

我用输入字段创建了一个表单:

name="some_name[]"

发布时将其作为多维数组

使用jQuery验证器来验证字段,但我确实遇到了问题 远程功能......

我的代码:

 "some_name[]": {
    required: true,
    digits: true,
    rangelength: [4, 4],
    remote:
          {
              type:'POST',
              url:plugin_path+'ajax/vogn_check.php',
          }

它自己的形式是动态的,因此人们可以根据需要添加任意数量的行。 这是问题所在:

当填写字段remote连接到它时,第一行工作正常,但是当我添加第二行时,我必须在实际验证之前两次点击该字段。

我已尝试使用.on('change', 'form', .on('keyup', 'form'

但仍需要点击两次!谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用名为library(my_library)的{​​{1}}在单个字段上声明规则可行。

但是,如果您有多个字段都共享相同的name,那么它将无效。

此插件使用"some_name[]"属性来跟踪输入元素,如果您多次使用name,则使用,您的规则将不适用于重复的实例。 < / p>

一种解决方案是将索引包含在name

"some_name[]"

然后你可以使用name方法和&#34;开头用&#34;选择器和jQuery <input name="some_name[0]" .... <input name="some_name[1]" .... <input name="some_name[2]" .... 一次声明所有数组字段的规则......

.rules()
  

它自己的形式是动态的,因此人们可以根据需要添加任意数量的行。

由于您的字段是动态添加的,因此您必须在 创建每个字段后,使用.each() 动态声明每个字段的规则。

我的完整答案假设您已使用$('[name^="some_name"]').each(function() { $(this).rules('add', { required: true, digits: true, .... }); }); 方法正确初始化了插件。

答案 1 :(得分:-1)

这最终成了我的答案

$('form#someForm').on('keyup', '.classOffSomeName', function(){
$(this).valid();
});

这种方式我强迫它连续两次验证它,所以通过在keyuptapout进行验证,它会正确地验证它。

给Sparky。不,你不需要这个name="someName[]"。但在某些情况下,您需要将其包装在.on或.blur中,以便它可以看到动态添加的元素,例如带有datepicker的动态字段,或者在这种情况下是ajax请求。

希望这有助于某人:)