Обработчик отправки не запускается после проверки. Это работает раньше. Попробуйте:
$('form').submit(function () {
alert('validation hasn\'t run yet at this point => see there is no red color over your form input fields yet');
if ($(this).valid()) {
alert('the form is valid');
} else {
alert('the form is not valid');
}
});
UPDATE:
После пересмотренного вопроса я все еще не могу воспроизвести проблему. Вот моя модель:
public class MyModel
{
[Required]
public string Name { get; set; }
}
и вот мой взгляд:
@model MyModel
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Html.BeginForm(null, null, FormMethod.Post, new { }))
{
@Html.EditorFor(x => x.Name)
@Html.ValidationMessageFor(x => x.Name)
<input type="submit" value="OK" />
}
<script type="text/javascript">
$('form').submit(function () {
$('#Name').val('some value');
});
</script>
Теперь, если я оставлю поле Имя пустым и отправлю форму, новое значение будет правильно назначено, и форма будет успешно отправлена на сервер без каких-либо ошибок. Если я удаляю строку $('#Name').val('some value');
, которая присваивает новое значение, и пытаюсь отправить форму с пустым полем на стороне клиента, запускаются проверки, и форма не отправляется.