手动触发日期选取器选择事件

Fire the datepicker onselect event manually

本文关键字:选择 事件 选取 日期      更新时间:2023-09-26

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

<script>
     $( "#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});
    </script>

您可以在日期选择器上触发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/

我从日期选择器的源代码中获取了这个.js文件。请注意,this应该替换为您的输入元素(而不是 jquery 对象,而是实际的 dom 元素(。就我而言,我是从键控事件中调用的。

// 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]);
}

最佳解决方案

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

发现的唯一也适用于日期时间选择器的解决方案

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