3

谁能告诉我为什么console.log当我使用 jQuery UI Datepicker 选择日期时该行没有运行?

<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" />
4

1 回答 1

6

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

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

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

$(function() {
  $("#datepicker").datepicker({ 
    altField: '#dateIntermediate',
    onSelect: function() { 
      $("#dateIntermediate").change();
    }
  });
  $('#dateIntermediate').change(function(){ 
    console.log("dateIntermediate changed");
  });
});​

你可以在这里测试


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

于 2010-07-24T13:08:24.060 回答