1

在我的编辑视图中,我有一个接受的文本框Date

使用 MVC,当我转到编辑视图时,字段已经填写了该记录的信息,这很好。

但是,我想在其中一个字段上设置一个事件侦听器,特别是如上所述接受日期的字段。

当我转到该页面时,我检查了源代码,该字段看起来像这样:

<div class="form-group">
    <label class="control-label col-md-2" for="DateEntered">Date Entered:</label>
    <div style="width:26.5%" class="col-md-10">
        <div id="datetimepicker" class="input-group date">
            <input class="form-control text-box single-line" id="DateEnteredPhase" name="DateEntered" type="datetime" value="09/21/2016" />
            <span class="field-validation-valid text-danger" data-valmsg-for="DateEntered" data-valmsg-replace="true"></span>
            <span class="input-group-addon">
                <span class="glyphicon glyphicon-calendar"></span>
            </span>
        </div>
    </div>
</div>

"09/21/2016"请注意最初正确的值如何。

这是我的 jQuery:

$(document).ready(function () {
    $(function () {
        $('#DateEnteredPhase').change(function () {
            var dateString = $('#DateEnteredPhase').val();
            alert(dateString);
        });
    });
});

现在,我已将该文本框中的日期值更改为"09/22/2016",并且更改事件未触发。此外,当我在更改日期检查来源时,该值仍然显示"09/21/2016"而不是"09/22/2016"

当我将它插入JSFiddle时,更改事件会适当地触发。

我该如何解决?

任何帮助表示赞赏。

更新

DateTimePicker(由eonasdan)在jQuery中初始化的地方:

$(function () {
    $('#datetimepicker').datetimepicker({
        format: 'MM/DD/YYYY'
    });
});
4

2 回答 2

3

问题:应用插件后,用户只需通过 UI 上显示的日历更改日期,插件将以编程方式更改日期,这不会触发您的更改事件

解决方案使用内置事件处理程序的插件来捕获更改事件,然后执行您的代码。所以下面的代码必须工作。这是插件文档中的更改事件详细信息

$(function () {
    $('#datetimepicker').datetimepicker({
        format: 'MM/DD/YYYY'
    });

   //add change event listner that plugin supports
   $('#datetimepicker').on('dp.change',function(e){
     alert(e.date);
   })

});
于 2016-09-21T14:34:20.563 回答
0

如果源是动态生成的 - 事件将不会绑定到文档就绪的元素。试试这个。

$(document).on("change", "#DateEnteredPhase", function () {
    var dateString = $('#DateEnteredPhase').val();
    alert(dateString);
});
于 2016-09-21T14:22:51.030 回答