jQuery UI Datepicker Функция altField .change не работает? - PullRequest
3 голосов
/ 24 июля 2010

Может кто-нибудь сказать мне, почему строка 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" />

1 Ответ

6 голосов
/ 24 июля 2010

Браузер просто не запускает событие 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() все идет в одно и то же место, но нет необходимости в более чем одной обертке, поэтому просто удалите внешнюю:)

...