Как я могу остановить распространение события в IE11 с помощью автозаполнения интерфейса JQuery UI? - PullRequest
0 голосов
/ 13 сентября 2018

Я использую библиотеку автозаполнения 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 работает нормально.

...