使用jquery验证的通用选择

时间:2012-06-11 06:36:12

标签: jquery jquery-selectors jquery-validate

作为一个相对jquery新手,如果我的问题有一个简单的解决方案,请耐心等待。在unique ID选择时,使用jquery validate可以很好地工作,例如

$("#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);
         });
    }
});

非常感谢

2 个答案:

答案 0 :(得分:0)

试试这个

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

$('.myForm').validate() // giving a common class to all forms

像这样自动完成调用submitHandler

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

这意味着this将引用validator object而非form,因此请使用form参数来引用表单并序列化它的字段

 $(form).serialize()

因此,在您提交处理程序而不是$(this).serialize()使用$(form).serialize()

答案 1 :(得分:0)

验证方法不链接对表单的引用,因此建议$(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);
         });
    }
  });
 });