【问题标题】:Add legend to jQuery datepicker将图例添加到 jQuery 日期选择器
【发布时间】:2023-03-04 08:04:05
【问题描述】:

我使用的是标准的 jQuery Datepicker,我需要修改它以在底部显示图例。当我使用 beforeShow 事件时,我无法将图例 html 附加到 datepicker,因为没有 #ui-datepicker-div 元素,并且 datepicker 不提供 afterShow 事件。这是我的代码:

var html = $('#datepickerLegendHolder').html();

$('#start_date.datepicker').datepicker({
        "dateFormat": 'yy-mm-dd', 
        minDate: 0, 
        showOn: "both",
        buttonImage: "/images/calendar-icon.png",
        maxDate: "+2Y",
        beforeShow: function(event, ui) { 
            $('#ui-datepicker-div').append(html);
        },
        onSelect: function (dateValue, inst) {
            $('#end_date.datepicker').datepicker("option", "minDate", dateValue);
            displayButtons();
        }
    });

有其他选择吗?天呐

【问题讨论】:

    标签: jquery datepicker jquery-ui-datepicker


    【解决方案1】:

    在引发onBeforeShow 事件时,元素#ui-datepicker-div 还不存在。

    一种解决方法是使用持续时间较短(如 150 毫秒)的 setTimeout 将您的图例附加到事件处理程序中的该元素。它不可能完全可靠,尽管由于插件的架构,我不知道还有什么其他方法。

    注意:文档列出了 create 事件,但 Datepicker 确实实现了小部件工厂,因此实际上没有引发创建事件!

    $('#datepicker').datepicker({
        ...
        beforeShow: function(event, ui) { 
            setTimeout(function() {
                $('#ui-datepicker-div').append('lalala');
            }, 150);
        }
    });​
    

    DEMO

    【讨论】:

    • 其实我已经尝试过使用 timeout() 函数,但是使用的是创建事件,并且超时时间更短,并且没有奏效。无论如何,它不会减少你的帮助:) Tnx!
    • 不幸的是,jQuery UI 的文档在 IMO 中非常糟糕。 “创建”事件仅适用于使用 Widget Factory 的小部件,并且 datepicker 尚未实现它。无论如何,很高兴它有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多