使用jQuery表单验证的自定义Ajax请求

时间:2011-10-05 07:06:06

标签: javascript jquery ajax forms validation

我想使用jQuery form validation plugin验证表单,但我无法使用验证处理程序发送自定义Ajax请求:

  $('#headForm').validate(
  {
    //submitHandler: submit,
    errorClass: "invalid",
    rules: {
      title: {maxlength: 50}
    },
    messages: {
      title: {maxlength: 'Max 50 chars'}
    }
  });

我的原始提交处理程序如下所示:

  $('#headForm').submit(function(event) 
  {
    event.preventDefault();
    $.ajax(
      {
        type: "PUT",
        url: "/target",
        data: $('#headForm').serialize(),
        dataType: "json", 
        success: function() 
          { 
            alert("ok");
          }
      });
  });

我尝试将其移动到通常的函数并在验证块中将其注册为submitHandler,但它不起作用。

  function submit() { // impossible to pass the event!
    $.ajax( ...
  }

如何将jQuery验证与自定义Ajax请求结合使用?

可能的表单验证错误: 我已经删除了验证码,看看提交是否有效。除非我删除了jQuery表单验证库的链接,否则它没有!所以似乎验证破坏了jQuery核心。我是否已经说过我喜欢动态打字......; - )

1 个答案:

答案 0 :(得分:0)

您是否在submit()函数中定义了一个参数?

(我猜你没有,这可能就是为什么它不起作用)

我认为你只需要指定'form'参数,然后在该参数上调用serialize(),如下所示:

submitHandler: function(form) { 
  $.ajax({
    type: "PUT",
    url: "/target",
    data: form.serialize(),
    dataType: "json", 
    success: function() 
      { 
        alert('ok');
      }
    });
   }

请参阅文档:http://docs.jquery.com/Plugins/Validation/validate#options