У меня есть несколько элементов управления датами в моем приложении и добавлено управление календарем 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?
Я благодарю Сэма, произошла ошибка в функции onchange, поскольку она основывалась на датах начала и окончания. Я не писал функцию, поэтому не понял, что они могут быть связаны. Мой плохой для принятия условия гонки, спасибо снова за то, что помог мне!