JQueryUI Datepicker - 将事件添加到禁用日期

Posted

技术标签:

【中文标题】JQueryUI Datepicker - 将事件添加到禁用日期【英文标题】:JQueryUI Datepicker - Adding Event to Disabled Date 【发布时间】:2019-06-16 05:51:08 【问题描述】:

我有一个 JQueryUI 日期选择器,有些日子使用 beforeShowDay 参数禁用。我知道您可以使用该参数添加工具提示,但我需要触发显示“此日期可能未选择”的消息。

这甚至可能吗?我已经尝试过 onSelect 参数,但只有在选择启用日期时才会触发。我也尝试过给禁用日期一个类,然后为具有该类的项目添加一个点击事件,但它似乎也不起作用。

function unavailable(date) 
    var dmy = date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear();
    if ($.inArray(dmy, formattedDates) == -1) 
        return [true, ""];
     else 
        return [false, '', 'Unavailable'];
    

$('#' + className).datepicker(
    controlType: 'select',
    minDate: minDate,
    maxDate: maxDate,
    defaultDate: maxDate,
    dateFormat: 'dd M yy',
    setDate: maxDate,
    beforeShowDay: unavailable
);

【问题讨论】:

【参考方案1】:

如果您需要触发自定义tool-tip,请抛出带有消息或任何想法的alert

根据文档,第二个参数是一个 CSS 类:

[1]: 添加到日期单元格的 CSS 类名或默认为 "" 演示文稿https://api.jqueryui.com/datepicker/#option-beforeShowDay

所以.. 为禁用日添加一个名为“custom-tool-tip”或其他什么的类并设置一个事件监听器。

$('body').on('click', '.custom-tool-tip', function(e)  // or whatever event(s) you want to listen to
    alert('This date may not be selected.');
);

【讨论】:

太好了,谢谢!这行得通。我试图将点击事件直接添加到具有自定义类的项目中,即 $('.disabledDate').on('click', function .... ) 但它不起作用,我相信因为没有页面加载时具有该类的元素。但我猜在执行 $('body').on('click', CLASSNAME 等时,它会先发制人地将点击事件添加到具有该类名的 的任何子级? 您好,它解决了您的问题。如果您认为这对您有所帮助,请将其标记为正确答案。这样其他有类似问题的人也可以从中受益。而且,是的..这就是它的作用 - 这样你就可以添加例如动态添加元素的事件监听器。虽然没有必要使用body.. 您可以将其缩小到最近的父元素 - 这样它可能会更有效.. 并且可以定位。

以上是关于JQueryUI Datepicker - 将事件添加到禁用日期的主要内容,如果未能解决你的问题,请参考以下文章

beforeShow 事件未在 jQueryUI Datepicker 上触发

处理 jQueryUI Datepicker for Bootstrap 下拉菜单的点击事件

jqueryUI datepicker 在传递日期之前触发输入的模糊,避免/解决方法?

jquery datetimepicker事件如何调用

如何使用 jqueryui 在表单中使用 datepicker?

使用 strtotime 从 jQueryUI datepicker 将字符串转换为 datetime