Я знаю, что этот точный вопрос задали здесь, но ответ не работал на то, что я должен был сделать так, я полагал, что дам некоторый пример кода и объясню немного...
$(document).keypress(
function (event) {
// Pressing Up or Right: Advance to next video
if (event.keyCode == 40 || event.keyCode == 39) {
event.preventDefault();
$(".current").next().click();
}
// Pressing Down or Left: Back to previous video
else if (event.keyCode == 38 || event.keyCode == 37) {
event.preventDefault();
$(".current").prev().click();
}
}
);
Это в основном отключает клавиши со стрелками для использования их для чего-то еще, но выполнения:
$(document).keypress(function () { });
не включает функцию по умолчанию снова... Мне нужен он для прокрутки страницы, не имея необходимость создавать функцию прокрутки для него...
Какие-либо идеи?
Спасибо,
Матовый
Я не уверен, что это правильный способ справиться с этим.
Лучшим способом решения этой проблемы было бы поставить какую-то проверку внутри инструкций document.keypress .. например ..
var enableKeys = false;
$(document).keypress(
function (event) {
// Pressing Up or Right: Advance to next video
if (event.keyCode == 40 || event.keyCode == 39 && enableKeys) {
event.preventDefault();
$(".current").next().click();
}
// Pressing Down or Left: Back to previous video
else if (event.keyCode == 38 || event.keyCode == 37 && enableKeys) {
event.preventDefault();
$(".current").prev().click();
}
}
);
Затем управляйте enablekeys там, где вы считаете нужным, либо с помощью наведения курсора, либо с помощью чего-то другого. линий.
Попробуйте отвязать событие нажатия клавиши из документа.
Я не знаю других способов сделать это.
HTH
Почему бы просто не обернуть условие вокруг event.preventDefault();
в вашем текущем коде?
Добавление нового обработчика не заменяет предыдущий, а добавляет новый. Возможно, вы ищете jQuery # unbind
, если пытаетесь удалить предыдущий обработчик, но если вы собираетесь часто включать и выключать его, вам, вероятно, будет лучше с флагом сообщая вам, следует ли предотвратить использование по умолчанию или нет в вашем существующем обработчике.
Добавление и последующее удаление обработчика выглядит следующим образом:
function keypressHandler() { /* ... */};
$('#thingy').keypress(keypressHandler);
// ...elsewhere...
$('#thingy').unbind('keypress', keypressHandler);