Отмена .preventDefault() или возобновление события нажатия на клавишу клавиатуры
Здравствуйте.
Нужно отменить событие Нажатие на клавиши клавиатуры вверх/вниз. Пишу: $(document).keypress(function(e){ if(e.keyCode==40 || e.keyCode==38){ e.preventDefault(); } }); Все классно, работает. Отлично. Теперь нужно, чтобы события нажатия на клавиши вверх/вних заработали. Подскажите, пожалуйста, как это можно сделать? |
antserg,
Цитата:
|
Hoshinokoe,
Есть какое-то событие, допустим, клик по картинке с id=img1. Нужно запретить прокрутку документа с помощью клавиш вниз/вверх. Я пишу: ... $(document).keypress(function(e){ if(e.keyCode==40 || e.keyCode==38){ e.preventDefault(); } }); ... Отлично, все работает как нужно. Клавиши вниз/вверх не работают. Теперь при клике по картинке с id=img2 мне нужно, чтобы клавиши вниз/вверх снова заработали, то есть в моем случае отменить preventDefault(). Как это можно сделать? Как можно убрать e.preventDefault()? |
Убрать обработчик же!
|
BallsShaped,
Так его и так нет при клике по второй картинке... Мы "отключили" клавиши вниз/вверх при клике по первой картинке. Если при клике по второй картинке НЕ указать e.preventDefault(), то от этого они не включатся снова. Например: $('#img1').click(function(){ $(body).css('color','#ff0'); }); $('#img2').click(function(){ // здесь нет кода }); Если я вначале кликну по картинке с id=img1, а затем кликну по картинке с id=img2, то экран все равно будет желтым? То же самое с e.preventDefault()... Я отключил клавиши вниз/вверх на первой картинке, почему они должны заработать при клике по второй картинке? |
antserg,
Цитата:
|
antserg,
Как вариант можешь сделать так: ... window.preventAction = true; $(document).keypress(function(e){ if(e.keyCode==40 || e.keyCode==38){ if (window.preventAction) e.preventDefault(); } }); $('#img2').click(function(e){ window.preventAction = false; }); ... |
Hoshinokoe,
Ясно, логику я понял, спасибо за помощь |
Цитата:
|
У меня немного другая ситуация.
Есть форма: <form id="form" method="POST" enctype="multipart/form-data"> <input id="phnum" type="text" name="phone" class="form-control square dark" required="required" placeholder="Телефон"><span id="sendBtn" class="send-btn"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> <div id="sendedOk" class="alert alert-success hidden"> <h4>Запрос отправлен</h4> </div> </form> изначально отключаем отправку формы по Enter $(document).ready(function() { $("#form").keydown(function(event){ if(event.keyCode == 13) { event.preventDefault(); return false; } }); }); На поле ввода установлена маска ввода плагином, когда телефон введен корректно (согласно маске) показываем кнопку отправки телефона: $(document).ready(function(){ $("#phnum").inputmask("7(999)999-99-99",{ "oncomplete": function(){ $("#sendBtn").css("display","block"); ВОТ ЗДЕСЬ БЫ ВЕРНУТЬ ОТПРАВКУ ПО ENTER } }); }); И когда показали кнопку отправки, вернуть бы отправку по клавише ENTER, как это можно сделать? |
Часовой пояс GMT +3, время: 18:27. |