jQuery UI DatePicker仅每秒验证一次

jQuery UI DatePicker仅每秒验证一次,jquery,asp.net-mvc,jquery-ui,validation,jquery-ui-datepicker,Jquery,Asp.net Mvc,Jquery Ui,Validation,Jquery Ui Datepicker,我已经上传了一个简单的应用程序,你可以有相同的经验,我与 DatePicker jQuery用户界面: DatePickerValidationMvc: 我在我的UI中使用jQuery UI DatePicker,标记和脚本如下所示: @Html.TextBoxFor(model => model.ExpireDateTime, new { id = "expiration-date", @Value = Model.ExpireDateTime.ToString("dd-MM-yyyy"

我已经上传了一个简单的应用程序,你可以有相同的经验,我与 DatePicker jQuery用户界面: DatePickerValidationMvc

我在我的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")]
<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="&#39;Expiration Date (DD-MM-YYYY)&#39; 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>
我只是使用VisualStudio中的默认MVC4模板。 因此,我引用这些脚本:

jquery-1.8.2.js jquery-ui-1.8.24.js

正在生成的标记如下所示:

@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")]
<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="&#39;Expiration Date (DD-MM-YYYY)&#39; 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更改日期时,验证只会被欺骗两次。

似乎我不是唯一一个有过这种经历的人:

有人知道如何在每次更改日期时调用我的验证方法,而不仅仅是每秒调用一次吗?

我已经上传了一个简单的应用程序,你可以有相同的经验,我与 DatePicker jQuery用户界面:
DatePickerValidationMvc:

将JS文件添加到页面或PartialView,以在MVC中添加客户端*验证*。它们应该在脚本文件夹中

MSDN信息:

启用客户端验证 要在ASP.NET MVC 3中启用客户端验证,必须设置两个标志,并且必须包含三个JavaScript文件。 打开应用程序的Web.config文件。验证在应用程序设置中将ClientValidationEnabled和UnobtrusiveJavaScriptEnabled设置为true。根Web.config文件中的以下片段显示了正确的设置:



@视图.标题

我找到了上述问题的解决方案。答案是在onClose事件上执行的函数:

$(function () {
    $("#expiration-date").datepicker({

        onClose: function () {
            $("#register-imei-form").validate().element("#expiration-date");
        }

    });
});
我在这个帖子里找到了答案:

谢谢你的回复,阿格纳科,但我的解决方案已经在做你提到的事情了。无论如何,我找到了处理onClose事件的解决方案,DatePicker:)您从未提到您附加了一些事件。。。但我很高兴你的问题解决了。嗨,阿格纳科,我想我一开始并没有处理任何事件,但事实证明,处理一次事件解决了问题。享受春天和代码;)