javascript - 测试元素是否已经有 jQuery datepicker

标签 javascript jquery jquery-ui datepicker

我有一个包含许多输入元素的表单。有些是带有 jQ​​uery UI 日期选择器的日期字段:

$("#someElement").mask("9?9/99/9999").datepicker({showOn: 'button', buttonText:'Click here to show calendar', duration: 'fast', buttonImageOnly: true, buttonImage: /images/calicon.gif' });

然后我有一个键命令绑定(bind)到这个函数:

function openCalendar() {
    var selection = document.activeElement;

    // { Need to test here if datepicker has already been initialized 
        $(selection).datepicker("show");
    // }
}

这对于已经有日期选择器的元素非常有用。但是,任何其他字段都会引发 javascript 错误。我想知道测试日期选择器是否已经在该字段上初始化的最佳方法。

最佳答案

哇,真不敢相信我错过了这个。 ui.datepicker.js的第108行:

/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',

所以我只需要测试 hasClass('hasDatepicker')。这似乎是最直接的方法。此外,此语句检查日期选择器当前是否打开(对于任何感兴趣的人):

if ($("#ui-datepicker-div").is(":visible") && $("#ui-datepicker-div").html() != "") {
    // datepicker is open. you need the second condition because it starts off as visible but empty
}

关于javascript - 测试元素是否已经有 jQuery datepicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2579389/

相关文章:

jquery - 如何使用 jQuery 刷新 ASP.NET MVC UserControl?

javascript - 在 append() 中将 Javascript 变量传递给 HTML 代码

css - 删除 jQuery Mobile 中的文本框阴影有问题吗?

javascript - .show() 不显示 HTML 元素

javascript - 下拉菜单不会下拉

javascript - Vue.js select2 Wrapper 组件改变事件

javascript - Chrome 上的 Javascript 中的日期验证

javascript - 为什么 JQuery $.post 提交两次?

javascript - 拉斐尔Js : Circle doesn't show proper value

jquery-ui - 编辑 Bootstrap 模板,动态添加 jarvisWidget 并在页面加载后重新生成小部件