$('#MyForm'). Valid() всегда возвращает false
Я пытаюсь опубликовать форму с помощью ajax post в mvc razor. И я пытаюсь проверить форму перед публикацией в базе данных. Но хотя форма действительна, она блокирует публикацию.
$(function () {
$('#MyForm').submit(function () {
if ($('#MyForm').valid()) {
//$("#divLoading").show();
$.ajax({
type: "POST",
url: '@Url.Action("Something", "Something")',
data: $('#MyForm').serialize(),
dataType: 'json',
error: function (xhr) {
$("#Message").text(xhr.statusText);
$('#divLoading').hide('fast');
},
success: function (result) {
//$('#divLoading').hide('fast');
if (result.IsSuccess) {
$("#Message").html(result.Message);
$('#MyForm')[0].reset();
}
}
});
}
});
});
Начальная форма содержит
@using (Ajax.BeginForm("Something", "Something", new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = "POST" }, new { @id = "MyForm" }))
{
}
Заранее спасибо
1 ответ
Ваша проблема здесь в том, что вы все еще используете действие по умолчанию для формы, поэтому страница будет перезагружаться до получения ответа ajax. Попробуй это:
$('#MyForm').submit(function (event) {
event.preventDefault();
if ($('#MyForm').valid()) {
//$("#divLoading").show();
$.ajax({
type: "POST",
url: '@Url.Action("Something", "Something")',
data: $('#MyForm').serialize(),
dataType: 'json',
error: function (xhr) {
$("#Message").text(xhr.statusText);
$('#divLoading').hide('fast');
},
success: function (result) {
//$('#divLoading').hide('fast');
if (result.IsSuccess) {
$("#Message").html(result.Message);
$('#MyForm')[0].reset();
}
}
});
}
где это разница:
$('#MyForm').submit(function (event) {
event.preventDefault();