我上传了一个简单的应用程序,您可以获得与我一样的体验 DatePicker jQuery UI: DatePickerValidationMvc :http://sdrv.ms/17tS25J
我在我的UI中使用jQuery UI DatePicker,标记和脚本如下所示:
@Html.TextBoxFor(model => model.ExpireDateTime, new { id = "expiration-date", @Value = Model.ExpireDateTime.ToString("dd-MM-yyyy") })
<script type="text/javascript">
$(function () {
$('#expiration-date').datepicker({ dateFormat: 'dd-mm-yy' });
});
</script>
我正在使用远程验证,我在模型上的属性如下所示:
[Remote("IsDateBetweenDateRangeAction", "Home", HttpMethod = "POST")]
我只是使用Visual Studio中的默认MVC 4模板。 因此我引用了这些脚本:
的jquery-1.8.2.js 的jquery-UI-1.8.24.js
生成的标记如下所示:
<div class="editor-field">
<input Value="13-09-2015" data-val="true" data-val-date="The field Expiration Date (DD-MM-YYYY) must be a date." data-val-remote="'Expiration Date (DD-MM-YYYY)' is invalid." data-val-remote-additionalfields="*.ExpireDateTime" data-val-remote-type="POST" data-val-remote-url="/Home/IsDateBetweenDateRangeAction" data-val-required="The Expiration Date (DD-MM-YYYY) field is required." id="expiration-date" name="ExpireDateTime" type="text" value="13-09-2015 09:57:14" /><br />
<span class="field-validation-valid" data-valmsg-for="ExpireDateTime" data-valmsg-replace="true"></span>
</div>
有趣的是,当我使用DatePicker更改日期时,验证只会每两次进行一次。
看来我不是唯一一个有这种经历的人: https://stackoverflow.com/questions/11341110/jquery-datepicker-only-every-second-click-event-fires
任何人都知道如何在每次更改日期时调用我的验证方法,而不仅仅是每隔一次?
我上传了一个简单的应用程序,您可以获得与我一样的体验 DatePicker jQuery UI: DatePickerValidationMvc: http://sdrv.ms/17tS25J
答案 0 :(得分:2)
我找到了解决上述问题的方法。在onClose事件上执行的函数是答案:
$(function () {
$("#expiration-date").datepicker({
onClose: function () {
$("#register-imei-form").validate().element("#expiration-date");
}
});
});
我在这个帖子中找到了答案: jQuery UI Datepicker with altfields: Validation not firing when it should
答案 1 :(得分:0)
将JS文件添加到您的页面或PartialView,以在MVC中添加客户端 * 验证 *。它们应该在Scripts文件夹中。
MSDN信息:
启用客户端验证 要在ASP.NET MVC 3中启用客户端验证,必须设置两个标志,并且必须包含三个JavaScript文件。 打开应用程序的Web.config文件。验证应用程序设置中的ClientValidationEnabled和UnobtrusiveJavaScriptEnabled是否设置为true。根Web.config文件中的以下片段显示正确的设置:
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
和
<head>
<title>@View.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
<script src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
</head>