Datepicker onSelect

时间:2012-02-09 11:59:41

标签: jquery datepicker onselect

我有一个带有类的输入[date_caisse]:datepicker-inline AND id:[date_caisse]

我在所有网页上初始化了此功能:

function InitEvents () {

$('.datepicker-inline').datepicker({

    showButtonPanel: true,  /*added by oussama*/
    changeMonth: true, /*added by oussama*/
    changeYear: true, /*added by oussama*/
    firstDay: 1,
    dateFormat: 'yy-mm-dd',/*'dd/mm/yy'*/
    onSelect: function (dateText, inst) {
        //alert('select!');
        id = $(this).attr('id');
        parts = id.split('-');
        id2 = parts[parts.length -1];
        $('#datepicker-target-id-' + id2).val(dateText);
    }
});

}

我想仅在当前页面上应用onSelect,所以这就是我所做的:

$('#date_caisse').datepicker({

    onSelect: function (dateText, inst) {
        alert('select!');
    }
});

当我在主js文件(在所有页面中调用)上放 alert('select!'); 时,它可以工作!但是当我尝试通过当前文件触发操作时它不会。

也许,onSelect不应该被调用两次。

那么,有人可以帮我吗?

谢谢,祝你有个美好的一天!

2 个答案:

答案 0 :(得分:11)

您是否将第二个函数放在jquery初始化块中? 我的意思是,它看起来应该是

$(function(){
   $('#date_caisse').datepicker({
      onSelect: function (dateText, inst) {
         alert('select!');
      }
   });
});

编辑:

好的,我明白了。 初始化datepicker时,原始dom元素标记有一个新的类添加,称为 hasDatepicker ,可防止后续初始化/重新配置。 我发现摆脱它的方法是删除该标记,以便对datepicker的配置进行任何修改。 因此:

$(function() {
   $('#date_caisse').removeClass('hasDatepicker');
   $('#date_caisse').datepicker({
       onSelect: function(dateText, inst) {
           alert('overridden!');
       }
   });
});

试一试!

答案 1 :(得分:2)

注意:如果设置onSelect选项,则datepicker会触发元素的更改事件。

如果您有可能需要回复元素的change事件,则需要记住在设置onSelect()时自行触发更改事件,例如:

$(function(){
   $('#date_caisse').datepicker({
      onSelect: function (dateText, inst) {
         alert('select!');
         // Remember to fire the change event...
         if (inst.input) {
             inst.input.trigger('change');
         };
      }
   });
});

使用onSelect的替代方法是绑定到datepicker触发的dateSelected事件。