手动触发datepicker onselect事件

谁能告诉我你如何触发datepicker的onselect事件? 我的代码运行良好(根据datepickers altfield的值从数据库中提取一些数据),但是当页面加载时,它不会在当前日期触发onselect事件,也不显示任何内容; 所以我想手动完成。

 $( "#datepicker" ).datepicker ( { altField: '#sheet', onSelect: function load() { $(document).ready(function() { $.ajax({ type: 'POST', url: 'test.php', data: {sheetid: $('#sheet').val()}, success: function(data) { $("#content").html(data); } }); }); }, firstDay: 1});  

您可以在设置日期后立即触发日期选择器上的click

码:

 $(document).ready(function () { $("#datepicker").datepicker({ altField: '#sheet', onSelect: function(date) { alert(date); }, firstDay: 1 }); $('#datepicker').datepicker("setDate", new Date(2013,09,22) ); $('.ui-datepicker-current-day').click(); // rapresent the current selected day }); 

演示: http : //jsfiddle.net/IrvinDominin/DynuW/

最佳方案

 var inst = $.datepicker._getInst($("#date")[0]); $.datepicker._get(inst, 'onSelect').apply(inst.input[0], [$("#date").datepicker('getDate'), inst]); 

我从datepicker.js文件的源代码中获取了这个。 请注意, this应该替换为您的input元素(而不是jquery对象,实际的dom元素)。 在我的情况下,我从keydown事件中调用它。

 // this is SUCH a hack. We need to call onselect to call any // specific validation on this input. I stole this from the datepicker source code. var inst = $.datepicker._getInst(this), onSelect = $.datepicker._get(inst, "onSelect"); if (onSelect) { dateStr = $.datepicker._formatDate(inst); onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); } 

这是我发现的唯一可用于datetimepicker的解决方案

 var $calendar =$('#from'); $.datepicker._getInst($calendar[0]).settings.onSelect()//or onClose or any event