Я использую MVC4 w/JQuery, и у меня есть форма, которую я создал с помощью @ Ajax.BeginForm. Он имеет обязательные поля (заданные на его модели представления). Я пытаюсь проверить форму до того, как она будет отправлена обратно; однако, похоже, это не подтверждается.jquery validate always return true
Первоначально у меня была кнопка отправки, и она просто отправила форму. Я изменил кнопку отправки на обычную кнопку и попытался позвонить $ ('# formname'). Validate(), но он всегда возвращает true (даже требуемые поля не заполняются). Другие представления, кажется, работают нормально (которые не используют Ajax.BeginForm).
Я ссылаюсь на jquery, jquery-ui, jquery.validate, jquery.validate.unobtrusive и jquery.unobtrusive-ajax.
У кого-нибудь есть идеи/предложения, что мне не хватает?
изменить --------------------------------------------- ------------------------------
Ниже мой код (это внутри главной страницы, которая ссылается на сценарии jquery):
@model AimOnlineMRA.Models.Reports.DateRangeViewModel
@using (Ajax.BeginForm("GetReport", "Reports", new AjaxOptions
{
UpdateTargetId = "report_pane", HttpMethod = "Post"}, new {@id="parameterForm"}))
{
@Html.AntiForgeryToken()
<script type="text/javascript">
$(document).ready(function() {
ApplyTheme();
$('#btnYes').click(function() {
$('#RunSpecificDateRange').val('true');
$('#yesNo').hide();
$('#dateRangeForm').show();
});
$('#btnCancel').click(function() {
$('#report_pane').html('').hide();
});
$('#btnOk').click(function() {
//if ($('#parameterForm').valid()) {
// alert('valid');
//} else {
// alert('invalid');
//}
});
$('#dateRangeForm').hide();
$('#BeginDate').datepicker({
showOn: 'button',
buttonText: 'Date Picker',
buttonImageOnly: true,
buttonImage: '@Url.Content("~/Content/Icons/calendar-icon.png")'
});
$('#EndDate').datepicker({
showOn: 'button',
buttonText: 'Date Picker',
buttonImageOnly: true,
buttonImage: '@Url.Content("~/Content/Icons/calendar-icon.png")'
});
});
</script>
<div class="margin-auto" style="width: 400px">
<div id="yesNo">
<span class="bold">Do you want to run this report for a specific date range?</span>
<br /><br />
@Html.Button("Yes", "btnYes")
@Html.Button("No", "btnNo")
</div>
<div id="dateRangeForm">
<span class="bold">Date Range</span>
<br /><br />
<div class="left">
<div class="left clear-both">
@Html.LabelFor(x => x.BeginDate) <br />
@Html.TextBoxFor(x => x.BeginDate, new {@style="vertical-align:top"})
@Html.ValidationMessageFor(x => x.BeginDate)
</div>
<div class="left clear-both m-top-5">
@Html.LabelFor(x => x.EndDate) <br />
@Html.TextBoxFor(x => x.EndDate, new {@style="vertical-align:top"})
@Html.ValidationMessageFor(x => x.EndDate)
</div>
</div>
<div class="left m-left-10">
</div>
<div class="left clear-both m-top-10">
@Html.Button("Ok", "btnOk")
@Html.Button("Cancel", "btnCancel")
</div>
</div>
</div>
}
----------------- РЕЗОЛЮЦИЯ ----------------------- ------
вызова $.validator.unobtrusive.parse($('#parameterForm'));
перед тем $('#parameterForm').valid();
исправили проблему
Пожалуйста, пост некоторые соответствующий код, возможно, использовать jsfiddle.net – Tdelang
Значит ли ваша модель имеет атрибут [Обязательный] в указанных полях? Создаете ли вы свои входы с помощью Razor HtmlHelpers? –
Да, у меня есть [Обязательно] на vm, и я создал их с помощью помощника бритвы. это одно из обязательных полей, которое выводилось, когда я рассматриваю его в chrome. – spyter