javascript - jQuery 日期选择器和类分配

标签 javascript jquery datepicker

我正在使用默认的 jquery 日期选择器,该选择器是通过分配 dp 来触发的。类到输入元素。 如果我在 html 中设置元素的类,但如果我分配 dp ,它就可以正常工作。 class with js ( document.getElementById(eleId).className = 'dp'; ) 当用户单击输入时不会触发日期选择器。 有什么想法吗?

最佳答案

这是因为当您将 datepicker 事件绑定(bind)到元素时(通过选择器,可能是 $(".dp"),它仅绑定(bind)到那些在那之后的任何时间,就像你说的,元素都可能获得该类(甚至失去它)。我的建议是做这样的事情:

<div id="container">
    <!-- Your elements that may or may not have the class "dp" -->
</div>

<script type="text/javascript">
    $("#container").on("click", "dp", function () {
        $(this).datepicker('destroy').datepicker({showOn: 'both'}).focus();
    });
</script>

当然,您可以将绑定(bind)放入 document.ready 中,并且可以更改传递给 datepicker 的选项。如果您无法缩小范围,您可以使用 "body" 或其他内容来代替 "#container"。此外,您还需要以某种方式考虑 onfocus

不过,我建议尽可能使用 jQuery,因为您已经包含了它。例如,您的代码:document.getElementById(eleId).className = 'dp';很好,但为什么不使用方法addClass,为什么不使用“#”选择器?喜欢:

$("#" + eleId).addClass("dp");
// and alternatively
$("#" + eleId).removeClass("dp");

使用className的一个问题是操作元素的类并不容易。使用 .className = "whatever" 会覆盖任何先前的 className 值 - 当然,您可以考虑这一点,但使用 jQuery 更容易。另外,当使用 removeClass 时,jQuery 可能会也可能不会自动删除元素的任何事件绑定(bind),而 className 不会执行任何类似操作。如果您要执行删除和添加类之类的操作,可能会变得困惑。

关于javascript - jQuery 日期选择器和类分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983567/

相关文章:

jquery - 仅在特定时间后触发事件 mouseenter,

javascript - 无法配置 jQuery 日期选择器来选择默认日期

javascript - 对象属性值不更新

javascript - HTML 模式弹出动画第二次不起作用

javascript - 如何自动触发提交表单并使用preventDefault

javascript - 如何分别获取嵌套括号或方括号中的字符串

javascript - 从 Xul 应用程序打开扩展管理器时出错

javascript - 无法在 JS forEach 中使用变量

java - 使用 dateformat 从日期选择器格式化日期

ReactJS Datepicker - 我希望日期选择器从本月开始并且仅