Как отделить нажатие кл. Enter в поле INPUT от нажатия Enter в выпадающем списке?
Ситуация: есть поле INPUT с обработчиком нажатия клавиш, который ловит "Enter":
inp.onkeyup = function(event) { event = event || window.event; if ((event.keyCode == 0xA)||(event.keyCode == 0xD)) { send(); return false; } };и это работает как надо. Но при выпадении списка автозаполнения поля тоже можно нажать Enter и функция поймает нажатие. А это НЕ надо. Вопрос? Как отделить эти нажатия клавиши Энтер? Ничего пока не смог придумать кроме как отменить выпадение списка: inp.setAttribute('autocomplete','off');Но некоторым это не понравится. Может, кто-нибудь подскажет другой вариант решения? |
#search - поле инпута.
$(document).ready(function() { $("#search").keyup(function(event) { if(event.keyCode==13) {alert("Message!!!");} }); }); |
Цитата:
|
Маэстро,
ну можно создать переменную фильтр - если она true (список не выпал) функцию выполняется и переменная фильтр стала false и инпут уже не ловит события по закрытии списка вернуть переменной true, следующий код для примера: <script> document.ok = true;//переменная фильтр document.onkeypress = function (event){//onkeypress event = event || window.event; if (document.ok == true){//если переменная фильтр true пропускаем и ловим события if (event.keyCode == 13){//если клавиша Enter alert('Фильтр прошел.'); document.getElementById('input').style.display = 'block';//Список выпадает } document.ok = false;//пока не нажмут на скрытие списка события не будут пропускаться } else alert('Фильтрация не прошла.'); } </script> <input type='button' value='input' id='input' style='display:none' onclick='document.ok = true;document.getElementById("input").style.display = "none"'> |
Пока писал, Dim@ опередил, идея та же - поставить флаг.
<input id="inp" value="text"> <script> window.onload = function () { var inp = document.getElementById('inp'); var flag; inp.onkeydown = function () { flag = inp.value.length; } inp.onkeyup = function(e) { e = e || event; if (e.keyCode == 13) { if (inp.value.length != flag) { return; } else { alert('отправили данные') } } } } </script> |
Кстати, только заметил, что тема ещё с того года (по ходу некропостить входит в моду :), хотя данная тема, думаю, актуальна)
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 13:05. |