手动触发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