我用输入字段创建了一个表单:
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'
但仍需要点击两次!谁知道如何解决这个问题?
答案 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();
});
这种方式我强迫它连续两次验证它,所以通过在keyup
和tapout
进行验证,它会正确地验证它。
给Sparky。不,你不需要这个name="someName[]"
。但在某些情况下,您需要将其包装在.on或.blur中,以便它可以看到动态添加的元素,例如带有datepicker的动态字段,或者在这种情况下是ajax请求。
希望这有助于某人:)