将事件添加到特定的jQuery UI Datepicker

时间:2014-03-12 21:18:59

标签: javascript jquery datepicker

我需要<input id="from" class="date"/>才能拥有onSelect选项。其他日期选择器没有。

的header.php

   <script>
     $(function() {
            $('input.date').each(function() {
                $(this).datepicker();
            });
        });
    </script>  

我需要在单独的脚本块中添加事件,因为它包含在不同的文件中。 我尝试了以下但它不起作用。 输入变为jQuery Ui datepicker但没有附加事件。

众多php页面中的一个

 <?php include('header.php'); ?>

   <script>  
     $(function() {
        $('#from').datepicker({onSelect: function() {
            alert(1);
        }
     });
   </script>  

是否有可能实现?

3 个答案:

答案 0 :(得分:1)

你可以尝试:

   $(function() {
        $('input.date').not("#from").each(function() {
            $(this).datepicker();
        });
    });



   $(function() {
        $('#from').datepicker({onSelect: function() {
        alert(1);
          } 
        });
    });

答案 1 :(得分:1)

好吧,你可以只听另一个事件,不需要自定义onSelect。 例如,在输入字段上监听change事件,因此每当内部数据发生变化时,您将触发手动回调。

编辑: 好吧,如果事件没有附加,请尝试修改jquery.ui.datepicker.js文件。 打开它,搜索function Datepicker()构造函数,然后搜索this._defaults对象。

您应该使用类似

的内容更改onSelect: null, // Define a callback function when a date is selected
onSelect: function(){
    if( /*this is $("#from")*/ )
        alert('1');
},

答案 2 :(得分:0)

好吧,伙计们,感谢您提供有用的答案,Up投票,但我最终这样做了。 不完全是我想要的,但它会做,直到我可以改进我的OO风格javascript

的header.php

<script>
  $(function() {
         $('input.date').each(function() {
           $(this).datepicker({
                    onSelect: function() {
                       typeof dateChanged === 'function' && dateChanged(this);
                    }
              });
         });
     });
 </script>  

众多php页面中的一个

 
<?php include('header.php'); ?>
<script>  
    var dateChanged = function(datePicker){
       console.log(datePicker)
     };
</script>  

修改

似乎首选的方法是:

的header.php

<script>
  $(function() {
         $('input.date').each(function() {
           $(this).datepicker();
         });
     });
 </script>  

众多php页面中的一个

 
<?php include('header.php'); ?>
<script>  
    $(function(){
        $('#from').datepicker('option','onSelect',function(){
            alert(1);
        });
    });
</script>