2012-03-07 5 views
1

Я показываю большую форму с большим количеством валидации в диалоговом окне jQuery, но теперь мне интересно, есть ли способ получить ее так, что как только я отправлю фактическую форму, она будет загружаться через Ajax и оставаться в модальном окно у меня открыто? Не уверен, что в любом случае это можно сделать.jQuery dialog - отправить форму через ajax?

Спасибо!

ответ

2

Вы MUST проверьте это замечательно jquery form plugin за ajaxifying ваши формы. Красота заключается в том, что если вы внесете валидации внутри атрибута pattern ваших входов (который я предпочитаю делать, а не писать фрагменты javascript для каждого поля ввода), форма будет отправлена ​​только после прохождения каждой из проверок. Короче говоря, поведение вашего отправителя по умолчанию изменится, и у вас будет точная копия вашего REQUEST, за исключением того, что на этот раз он находится в ajax.

+1

Я хотел избежать расширения, если это возможно, но, честно говоря, это выглядит великолепно, искушаемо, но это будет означать повторное выполнение моей проверки, возможно, hm! – Nick

3

Да, вы должны hyjack кнопку submit, чтобы выполнить ajax GET, передавая все поля формы, а затем возвращает false;

+1

кнопка только заботится о части ее ... что, если пользователь нажимает «enter»? – charlietfl

+0

Это хороший вариант, спасибо – Nick

1
$('.mySubmitButton').bind('click', function(e) { 
    //do something else 
    return false; //stops form from submitting the normal way. 
}); 

или

$('form#IDofForm').submit(function() { 
     //do something upon submit 
    }); 

или комбо обоих, если вы хотите

1

Вот failry простой метод, который будет просто заменить элемент формы сам UPoN представить успех. Я использую на метод(), так что код может выполняться при загрузке страницы предварительной сформировать загружаемый в AJAX

$(document).on('submit', '#formID',function() { 
    var $form = $(this); 
    var dataToServer = $form.serialize(); 
    $.post(urlString, dataToServer, function(dataFromServer) { 
     /* run ajax sucess code here */ 

     $form.replaceWith(dataFromServer); 


    }); 
    return false; /* avoid browser submitting form*/ 

}); 

EDIT: как интегрировать это будет зависеть от ваших методов проверки также

+0

Спасибо, я займусь этим сейчас – Nick

Смежные вопросы