2015-12-04 2 views
1

У меня есть сайт, который использует события с тяжелыми ключами. Для определенных действий он также открывает bootbox confirm box. Поле подтверждения отображается над прозрачным слоем, поэтому все действия с щелчком мыши не выполняются, если пользователь не нажимает кнопку «Отменить» или «ОК» в подтверждении загрузки. Однако я также хочу, чтобы все события нажатия клавиш были отключены, когда поле подтверждения активно.Отключить нажатие при отображении поля подтверждения

Текущий у меня есть:

bootbox.confirm('blah blah'? function(yesPlease){ 
    if(yesPlease) { 
    goAndClimbAVolcano(); 
    } 
}); 

я могу обернуть это подтвердить под disableAllKeyPress() и enableAllKeyPress(), но мне было интересно, если есть более простой способ для достижения этой цели ...

Любые указатели высоко оценили ,

+0

@WhiteHat почему вы боретесь с почему? –

+0

Извините, я не был ясен. какой вред? что делает ключевое нажатие, позволяющее пользователю делать? могут ли они добираться до других частей страницы, когда отображается окно? – WhiteHat

+0

$ ('*'). Off ('keyup keydown keypress'); $ ('*'). On ('keyup keydown keypress'); http://stackoverflow.com/questions/15245294/disable-all-keyup-keydown-keypressed-events-present-on-page – Korgrue

ответ

1

Я бы использовал логическое для блокировки событий. Поместите locked=true непосредственно перед отображением вашего подтверждения, и locked=false после его закрытия.

Тогда вам нужно будет только объявление if(locked) return; о ваших ключевых событиях.

Надеюсь, что это помогло.

EDIT: Я знаю, что есть очень много способов сделать это, я просто разместил другой один :)

+0

Я сделал это, прежде чем я прочитал ваш ответ :) Но вы по-прежнему заслуживаете выбора в качестве принятого ответа –

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