2015-09-22 2 views
0

Хотя я уверен, что, вероятно, есть дублированный вопрос, где-то я не мог его найти. Так что извините меня заранее, если он есть.Javascript/jQuery изменение события только для кликов

У меня есть раскрывающийся список, к которому я привязываю событие изменения с помощью jQuery. Проблема здесь в том, что, когда вы выбираете раскрывающийся список (без изменений) и затем начинаете вводить текст, большинство браузеров делают какой-то вариант выбора автозаполнения вариантов. Каждый раз, когда значение изменяется, это влияет на мой метод. Это нормально, но я хотел бы отфильтровать эти дополнительные события и реагировать только на «реальный» выбор, либо на щелчок (мышь), либо после выбора значения и нажатия ввода.

Я могу изменить на использование onkeypress/onclick, но тогда мне пришлось бы написать дополнительную логику, чтобы проверить, действительно ли значение изменилось или нет. Итак, есть ли отличный способ объединить все это и выбрать, чтобы выбрать только правильный выбор, исключая события в стиле автозаполнения, которые инициирует браузер? Я проверил, содержит ли объект события изменения что-нибудь полезное для выяснения того, что инициировало изменение, похоже, не так.

+1

Это поведение требуется для доступа (например, тех, кто просматривает только с клавиатуры). Я не понимаю, почему это проблема - выбор все еще выполняется, и событие 'change()', которое запускается, является вполне допустимым поведением. –

+0

Да, я это знаю. Событие копирует «выбранное» значение в другой список, хотя, и я не хочу, чтобы это произошло, пока пользователь вводит значения. Другим решением будет дополнительная кнопка, которую нужно щелкнуть, но это дополнительный шаг, на который я действительно не хочу беспокоить пользователя. – Jasper

+0

Для выполнения действия всегда должна быть кнопка. Выполнение действия сразу после выбора было просто удобством. –

ответ

0

вы можете проверить свойство 'which'. e.which даст неопределенный щелчок мыши и даст 13 для ввода нажатия клавиши.

+0

Нет, не могу это использовать. e.which возвращает undefined для обоих кликов, а также буквы, вводимые как часть автозаполнения. – Jasper

Смежные вопросы