Confirm или event keyboard
Есть серьезная проблема! Есть конфирм окошко, и оно прекрасно, с одним но... перед его появлением есть другое окно, чтобы его закрыть пользователь нажимает клавишу на клавиатуре. Так как в конфирме фокус сразу стоит на кнопке OK, то когда пользователь нажимает кнопку, в окне предшедсвующем конфирм, конфирм сразу срабатывает (нажали OK), так как не успевает клавиша отпустится. Из этого вопрос, или как убрать фокус на кнопках в конфирме (подразумеваю что никак), или как сделать обработчик, который будет проверять отпущены ли все клавиши клавиатуры, а после того как отпущены - выводить конфирм. Кто очень хорошо шарит в event ?
|
Есть вариант починить клавиатуру. Не должно ничего такого быть (у меня, по крайней мере, ни в FF, ни в опере, ни даже в IE нет).
|
firefox 33. если зажать и держать клавишу , то при появлении конфирм он автоматически срабатывает.
|
да где угодно, в хроме тоже. (клавиша space)
|
Цитата:
Если сильно не нравится и подключен jQuery, то можно как-то так: <script type="text/javascript" src="https://code.jquery.com/ui/1.11.2/jquery-ui.min.js"></script> <script> $(document).one("keyup", function(event) { if (event.keyCode == 13) // Enter execAfter(); }); alert("!"); function execAfter() { confirm("?"); } </script> |
не - не, это слишком просто) не под мой случай, у меня другой случай. фишка чтобы понять момент когда не нажата никакая клавиша! тоесть условие такое ...
function test(){ if (ненажата_никакая_клавиша) { делай код в нашем случае покажи конфирм } else { test(); // или setTimeout(test,время); return false; } }; вот как сформировать условие - ненажата_никакая_клавиша |
Цитата:
Когда видно, то видноооооооооооооооооооо.. ...... а когда не видно, происходит то же самое. Если в момент пока юзер держит нажатой кнопку подменить диалог ггггггггг подменили гггггггг - то остаток строки пойдет в следующее окно. С кнопконажимателями (программами которые имитируют юзера) такая байда постоянно происходит и приходится вводить задержки. Так и введите. |
Цитата:
Цитата:
|
Цитата:
сейчас реализовал так: function test(){ if (window.event && (window.event.type === 'keydown' || window.event.type ==='keypress')) { setTimeout(function(){test,1500); return false; } if (confirm(текст)){ код } }; срабатывает только раз, при последующем вызове из settimeout уже не видит event (если клавиша будет нажата более полторы секунды сработает true в confirm) Почему не годятся ваши варианты, потому что суть - сделать отсрочку выполнения кода, при этом бесконечно ждать, до тех пор пока не отпустится клавиша и тогда продолжить выполнять. |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 08:27. |