2012-06-11 42 views
0

作为一个相对的jquery新手,请耐心与我,如果有一个简单的解决方案,我的问题。例如,使用jQuery验证时,使用unique ID进行选择时效果很好。通用选择使用jquery验证

$("#myForm").validate({ 
    debug: false, 
    rules: 
    { 
     field1: "Required" 
    }, 
    messages: 
    { 
     field1: "Required" 
    }, 
    submitHandler: function(form) { 
     $.post('formAction.php', $("#myForm").serialize(), function(data) { 
      $('#results').html(data); 
     }); 
    } 
}); 

我需要扩展这对与多个自动生成的形式myForm1, myForm2一般工作等

我可以通过一个共同的类选择$("myForm")验证,然后应用submitHander的特定形式(myForm1myForm2等),如:

$(".myForm").validate({ 
    debug: false, 
    rules: 
    { 
     field1: "Required" 
    }, 
    messages: 
    { 
     field2: "Required" 
    }, 
    submitHandler: function(form) { 
     $.post('formAction.php', $(this).serialize(), function(data) { 
      $('#results').html(data); 
     }); 
    } 
}); 

非常感谢

回答

0

试试这个

$('[id^=myForm]').validate(); // work for id pattern myForm1, myForm2... 
           // this selector will target forms whose id start 
           // with myForm 


自动完成调用submitHandler这样

validator.settings.submitHandler.call(validator, validator.currentForm); 

这意味着this将参照validator object不是form,所以使用form参数指的是形式和序列化是这样的

$(form).serialize() 

所以领域,在你提交的,而不是$(this).serialize()使用,$(form).serialize()处理程序。

+0

谢谢,我本来应该更详细。我已经尝试了通用调用选择器$('。myForm')并使用通配符$('[id^= myForm]')。这很好,但是我怎么参考所选的单个表格。在上面的例子中,我用$(this)mbut这个选择器是无效的。希望我最好解释一下? –

0

e验证方法不会链接对表单的引用,因此建议$(form).serialize仍然引用共享公共类的第一个表单。巨大的帮助,虽然,因为它让我在正确的轨道上绕找到工作: -

https://github.com/jzaefferer/jquery-validation/issues/157

$(".myForm").each(function(index,element) { 
    $(element).validate({ 

    debug: false, 

    rules: 
    { 
     field1: "Required" 
    }, 
    messages: 
    { 
     field2: "Required" 
    }, 
    submitHandler: function(form) { 
     $.post('formAction.php', $(form).serialize(), function(data) { 
      $('#results').html(data); 
     }); 
    } 
    }); 
});