Я использую библиотеку автозаполнения jquery-ui-1.8.21 для создания раскрывающихся списков для полей в моей форме. Автозаполнение поставляется с 2 обработчиками событий: «выбор» и «изменение».
Когда пользователь выбирает элемент из раскрывающегося списка, он вызывает событие «выбор», заполнение поля, добавление текста в поле (назовем его полем B) и другие вещи. Когда пользователь не фокусирует поле, событие «изменение» инициируется, если значение в поле было изменено, добавляя текст в поле B.
Моя проблема в том, что когда пользователь выбирает элемент в раскрывающемся списке, а затем не фокусируется, он вызывает события «выбор» и «изменение», добавляя текст в поле B дважды. Я хочу только вызвать событие выбора, чтобы добавить текст один раз. По какой-то причине оба события срабатывают только при нажатии на раскрывающийся список, когда при выборе с помощью клавиатуры запускается только «выбор».
select: function (event, ui) {
console.log("select function")
//other stuff
event.preventDefault();
event.returnValue = false;
}
change: function (event, ui) {
console.log("change function")
//other stuff
}
Я пробовал event.preventDefault
, event.returnValue
, оба в каждой комбинации с window.event
и event.originalEvent
(поскольку JQuery создает свое собственное событие), и return false
, и никто из них не останавливает "изменение" событие от запуска.
Интересно, что для всех этих событий event.cancelable
и event.isDefaultPrevented
читается как истина, поэтому СЛЕДУЕТ отменить, но это не так.
Как мне заставить это работать?
Это проблема только в IE11, в Chrome event.preventDefault
работает нормально.