Отмена .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, время: 22:56. |