使用Html.DatePickerFor时,如何在JavaScript中监听日期更改

时间:2013-05-13 12:47:15

标签: javascript jquery asp.net-mvc-4

我的ASP.Net MVC 4应用程序页面上有一个日期输入字段。当用户更改此日期时,我需要运行一些客户端验证。

生成此字段的代码是:

@Html.DatePickerFor(x => x.EndDate)

在与上述代码相同的cshtml页面的底部,我还有以下内容:

<script type="text/javascript">
    MyValidation.FormValidator.initialize($('#EndDate'));
</script>

MyValidation.FormValidator.js文件:

MyValidation.FormValidator = (function () {
    return {   
        initialize: function (endDateInput) {
            endDateInput.bind('input', function () {
                alert("hit");
                SomeValidationFunction();
            });
        }
     };
})();

我尝试了很多不同的方法来编写

endDateInput.bind('input', function () {...}

部分以便正确触发,但我的尝试都没有奏效。例如,我目前的努力只是在用户输入日期时才导致验证逻辑运行;如果用户从弹出日历中选择一个新日期,则验证不会触发。

我对网络开发很陌生,所以我认为我在这里做了一些根本性的错误,因为这似乎不应该是一个难题。

2 个答案:

答案 0 :(得分:0)

你可能已经解决了这个问题,但我会把它写成

<script type="text/javascript">
    $(document).ready(function(){
        $('#EndDate').change(function(){
            SomeValidationFunction();
        });
    });
</script>

答案 1 :(得分:0)

以下代码正在侦听日期中的无焦点或blur。即使有blur事件,jquery也会检查是否存在有效日期。如果有,jQuery将运行代码。

$('#choose-date').on('blur',function(){ 
    if($(this).val()){
        console.log('changed date');
        //YOUR CODE HERE
    }
});