Onchange для jQuery Datetime

#javascript #jquery #datetime

#javascript #jquery #datetime

Вопрос:

Проблема с плагином onchange для jQuery Datetime:http://plugins .jquery.com/project/datetime

Я использую следующий код.

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="/charts/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src='/charts/js/jquery-ui-1.8.6.custom.min.js'></script>
<script type="text/javascript" src="/charts/js/jquery.ui.datetime.min.js"></script> 
<link rel="Stylesheet" href="/charts/css/redmond/jquery-ui-1.8.6.custom.css" />
<link rel="Stylesheet" href="/charts/css/jquery.ui.datetime.css" type="text/css" />

<script type="text/javascript">
    $(function(){
        $('#endSelect').datetime({ value: '2011-01-01 13:00', minDate: '2011-01-01 01:00', maxDate: '2011-12-31 12:00'});
    });

    jQuery('#endSelect').change(function() {
        alert("hi");
    });

</script>

</head>
    <body>
        <input id="endSelect" class="grid-3" />
    </body>
</html>
  

Я настроил тестовый сайт здесь, где вы можете протестировать код самостоятельно.

Комментарии:

1. Где этот код «onChange»? Другими словами, где это отображается в вашем <script> содержимом? Что произойдет, если вы переместите его в тот же обработчик «ready», где вы настроили параметры «.datetime()»?

2. Где вы определяете «материал», вы пробовали «материал ()»

3. Я опубликовал полный код, а также тестовую ссылку.

4. Похоже, это как-то связано с функцией .change и плагином datetime и .click работает.

Ответ №1:

Я протестировал это, и, похоже, это работает..

 jQuery('#endSelect').change(function() {
    alert('duh');
});
  

Комментарии:

1. Да, у меня это не работает. Я опубликовал полный код, а также тестовую ссылку, показывающую, что он не работает. Любая помощь была бы отличной.

Ответ №2:

я написал datetime. он использует фабрику виджетов. события там не запускаются как обычные события jquery по дизайну. ознакомьтесь с документами наhttp://wiki.jqueryui.com/w/page/12138135/Widget factory. у вас есть два способа выполнить то, что вы пытаетесь сделать.

 <script>
  $(function(){
    // you can put any triggerable event in as options on the init
    $('#datetime').datetime({ value: ' 1month', change: function(){ 
        alert("hello small world") 
      } 
    });
    // or bind using the plugin name as a prefix on the event
    $('#datetime').datetime({ value: ' 1month' }).bind("datetimechange", function(){         
        alert("hello small world") 
      });
    });
</script>
Date:amp;nbsp;<input id="datetime" />
  

надеюсь, это поможет. R

Ответ №3:

Привязка вашего события происходит до того, как элемент существует. Селектор не соответствует ни одному элементу и прикрепил ваше оповещение к этим 0 элементам.

Вам нужно, чтобы подключение к событию происходило после того, как элемент находится в DOM, все, что вам нужно сделать, это переместить вашу функцию оповещения внутри первого вызова jQuery, это означает, что код не запускается до запуска onLoad:

 <script type="text/javascript">
    $(function(){
        $('#endSelect').datetime({ value: '2011-01-01 13:00', minDate: '2011-01-01 01:00', maxDate: '2011-12-31 12:00'});
        jQuery('#endSelect').change(function() {
            alert("hi");
        });
    });
</script>
  

Комментарии:

1. Только что попробовал, но он все еще не работает. Однако функция .click работает, поэтому она как-то связана с функцией .change