0

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

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

非常感谢

4

2 回答 2

0

e validate 方法不会链接对表单的引用,因此建议的 $(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);
         });
    }
  });
 });
于 2012-06-11T20:20:39.200 回答
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 objectnot the form,因此使用form参数来引用表单并序列化它的字段,如下所示

 $(form).serialize()

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

于 2012-06-11T06:37:47.910 回答