我的应用程序中有一些日期控件,并添加了一个 JQuery UI 日历控件作为对话框图像选择器:
<input type="text" id="punchStartDate" class="EndDateClass" name="punchStartDate" />
这是我添加日历控件的方法:
jQuery("input.EndDateClass").datepicker({
showOn: "button",
buttonImage: "../images/calendar.gif",
buttonImageOnly: true,
dateFormat: dateFormat.replace("DD", "dd").replace("D", "d").replace("MM", "mm").replace("M", "m").replace("yyyy", "yy"),
beforeShow: function (input, inst) {
if (jQuery(this).is(':disabled')) {
return false;
}
}
});
这工作正常,但我有一些控件,我还添加了一个 onchange 事件。有了这些,日历控件仍然显示并填充输入,但是一旦选择了日期,对话框就不会消失。这只会定期发生,所以我怀疑是竞争条件。
这是导致此问题的输入:
<input type="text" id="punchStartDate" class="EndDateClass" name="punchStartDate" onchange="CheckWeekdays.SetCheckBoxes('punch');" />
我怀疑 onchange 事件阻止了对话框的隐藏事件,但不知道如何解决这个问题。如何纠正竞争的 javascript 调用之间的这种竞争条件?