получить $ .post для работы с плагином validate для нескольких форм без отдельных функций - PullRequest
1 голос
/ 23 июля 2011

На фан-сайте я делаю 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 Ответ

2 голосов
/ 23 июля 2011

Вы правы, считая, что submitHandler - это правильный обратный вызов для использования. Тем не менее, я столкнулся с некоторыми интересными проблемами при использовании его с несколькими формами (как вы пытаетесь сделать). Например, в этом коде:

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

Обратный вызов submitHandler не получает правильный параметр (он всегда получает #form1). Я считаю, что это на самом деле ошибка в jQuery-validate (поэтому я подал здесь ).

Во всяком случае, достойным обходным решением было бы обернуть проверочный вызов в .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/

...