Как загрузить форму, используя ajax, проверить ее, а затем отправить ее, используя ajax?
Я открываю диалоговое окно jQuery, содержащее форму, которая загружается вызовом ajax, запускаемым при открытии диалога. Когда пользователь нажимает кнопку ОК, я хочу проверить форму перед ее отправкой с помощью ajax. Вот обратный вызов, назначенный кнопке ОК:
var dialogOK = function () {
var $form = $(this).find("form:first");
if ($form.find("input:first").length > 0) {
$form.removeData("validator").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse($form);
$form.validate({
submitHandler: function (form) {
alert("This alert doesn't appear");
},
invalidHandler: function (event, validator) {
alert("Neither does this one");
}
});
if ($form.valid) {
alert("form.valid says it's valid when it's not");
//$form.submit(); //when this is called the client-side
//validation works and the form is not submitted
//but when I call ajaxSubmit (forms jQuery plugin)
//the form is submitted
$form.ajaxSubmit({
success: function () {
alert("And I still need to work out how to check whether
server-side validation passed before I close the dialog");
}
});
}
}
else {
$(this).dialog("close");
}
};
Я основал код на этом вопросе, но я не могу понять, как запустить проверку на стороне клиента при выполнении ajax submit.
Я использую jquery-1.9.1, jquery.unobtrusive-ajax, jquery.validate и jquery.form
1 ответ
Решение
Вам нужно проверить правильность значения метода плагина, так что вам нужно это
if ($form.valid())
{
// do stuff
}
не это
if ($form.valid)
{
// always true, as presence of the plugin method is 'truthy'
}