获取$ .post以在多个表单上使用验证插件而无需单独的函数

时间:2011-07-23 14:03:18

标签: jquery-plugins jquery jquery-validate validation

在粉丝上我做http://yamikowebs.com/ee/
我有几种形式(2个大气压)。我使用$ .post来查找提交的表单。提交表单并在表单最初使用.html()。

显示页面结果

我的下一步是使用工作正常的验证器,但我不确定如何将2放在一起。

submitHandler: function(form){}似乎是其提交方式的设定。但是,我无法使用$.post函数来处理这个问题,或者找出正在处理的表单。

如果我保留验证插件的默认值,如果没有错误,它会将您发送到该页面。它使用的ajax插件不能满足我的需求。以下是我的$.post功能

表单验证:

//ajax post
$("form").submit(function(event)
{
    event.preventDefault();//stop from submiting
            //set needed variables
    var $form = $(this)
    var $div = $form.parent("div")
            $url = $form.attr("action");
            //submit via post and put results in div
    $.post( $url, $form.serialize() , function(data) 
    { $div.html(data) })

})

http://docs.jquery.com/Plugins/validation#source是验证插件

1 个答案:

答案 0 :(得分:2)

你认为submitHandler是正确使用的回调是正确的。但是,我在使用多种形式时遇到了一些有趣的问题(比如你正在尝试做)。例如,在此代码中:

$("#form1, #form2").validate({
    submitHandler: function(form) {
        alert(form.action);
        alert(form.id);
    }
});

submitHandler回调未获得正确的参数(它始终为#form1)。我相信这实际上是jQuery-validate中的一个错误(所以我已经提交了here)。

无论如何,一个不错的解决方法是在.each()中包装验证调用:

$("form").each(function() {
    $(this).validate({
        submitHandler: function(form) {
            /* 'form' has the correct value */
            var values = $(form).serialize(),
                $div = $(form).parent("div");

            alert(form.action);
            alert(form.id);
            /* Perform AJAX call here */
        }
    });
});

示例: http://jsfiddle.net/andrewwhitaker/MmCXN/