jQuery UI Datepicker altField .change函数不起作用?

ben*_*ben 3 javascript jquery jquery-ui javascript-events jquery-ui-datepicker

任何人都可以告诉我为什么当我使用jQuery UI Datepicker选择日期时,console.log行没有运行?谢谢阅读.

<script type="text/javascript">
    $(window).ready(function() {
        $(function() {
            $("#datepicker").datepicker({ altField: '#dateIntermediate'});
        });
        $('#dateIntermediate').change(function(){ 
            console.log("dateIntermediate changed");
        });
    });
</script>
<p>Date: <input id="datepicker" type="text"></p>
<input type="hidden" id="dateIntermediate" />
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 6

在这些情况下浏览器不会触发change事件(通过脚本设置值),如果你想知道它何时发生,你可以使用datepicker 的onSelect处理程序,如下所示:

$(function() {
  $("#datepicker").datepicker({ 
    altField: '#dateIntermediate',
    onSelect: function() { 
      alert('Current #dateIntermediate value: ' + $("#dateIntermediate").val());
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下.或者,您也可以change以相同的方式触发当前拥有的处理程序:

$(function() {
  $("#datepicker").datepicker({ 
    altField: '#dateIntermediate',
    onSelect: function() { 
      $("#dateIntermediate").change();
    }
  });
  $('#dateIntermediate').change(function(){ 
    console.log("dateIntermediate changed");
  });
});?
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下


顺便说一句,你不需要$(window).ready(function() { });那里的包装器,它等同于$(document).ready(function() { });你的$(function() { });包装器已经处理过的包装器.你当前的方法是有效的,因为$(anything).ready()所有方法都去了同一个地方,但不需要多个包装器,所以只需删除外层的:)