2015-09-28 74 views
-1

我做了一个表格我的输入字段上:验证失去焦点多维数组

name="some_name[]" 

要张贴

时使用jQuery验证程序来验证领域得到它作为一个多维数组,但我确实有 远程功能的问题....

我的代码:

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

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

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

我试着.on('change', 'form', .on('keyup', 'form'

不过还是要挖掘出一倍!任何人都知道如何去做这件事?

回答

0

name名为"some_name[]"的单个字段上声明规则可行。

但是,如果您有多个字段全部共享相同的name,那么它将无法工作。

如果您不止一次使用"some_name[]",则此插件使用name属性来跟踪输入元素,并使用您的规则不适用于重复实例。

一个解决方案是在name中包含索引。

<input name="some_name[0]" .... 
<input name="some_name[1]" .... 
<input name="some_name[2]" .... 

然后你可以使用.rules()方法有“开始,以”选择和jQuery .each()上一次所有阵列领域申报规则...

$('[name^="some_name"]').each(function() { 
    $(this).rules('add', { 
     required: true, 
     digits: true, 
     .... 
    }); 
}); 

形式它自我是动态的,所以人们可以添加任意数量的行。

由于你们的田地,动态添加,你必须每一个被创建后动态申报使用.rules('add')每个字段的规则。

我的整个答案都假定您已经使用.validate()方法正确初始化了插件。

+0

嘿斯帕蒂。 ty为快速回答,你说什么是有道理的,hovever我有约15个领域的规则写这个扫管笏,他们都工作,因为他们应该做其他正常的方式,你可以向我解释为什么是这样吗?.... 只有6个月,因此我正在寻找学习尽可能多的posible。 提前致谢! –

+0

@dk_skal,我看不到你在说什么,所以我不知道。就像我说的那样,只有当你有一个带有'somename []'的字段时,它才会起作用。 – Sparky

-1

这个结束了我的答案

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

这种方法,我强迫它连续两次验证它使双方makeing它验证在keyuptapout它proporly验证它。

要Sparky。不,你不需要一个。每个这个name="someName[]"是充满了!但在某些情况下,您需要将其包装在.on或.blur中,以便它可以看到动态添加的元素,例如带有日期选择器的动态字段,或者在此情况下为ajax请求。

希望这可以帮助别人:)

+0

你很困惑。正如我的回答清楚地解释的,将'.rules()'方法附加到多个元素时,'.each()'是绝对需要的。而'.rules()'方法只需要在调用'.validate()'之后创建的元素声明规则。 **发布后,您的问题/答案完全没有意义,验证将无法正常工作**。如果你希望得到一个准确的解决方案,那么你需要写出一个很好的问题,包括任何相关的代码......因为你从未提及在你的问题中使用日期选择器,所以这个答案对其他人来说是没有用的。 – Sparky