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) Почему не годятся ваши варианты, потому что суть - сделать отсрочку выполнения кода, при этом бесконечно ждать, до тех пор пока не отпустится клавиша и тогда продолжить выполнять. |
Цитата:
Цитата:
|
Цитата:
вот так конечно же: setTimeout(test,1500); |
| Часовой пояс GMT +3, время: 00:08. |