как повторно включить значение по умолчанию после выполнения event.preventDefault ()

Я знаю, что этот точный вопрос задали здесь, но ответ не работал на то, что я должен был сделать так, я полагал, что дам некоторый пример кода и объясню немного...

$(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 () { });

не включает функцию по умолчанию снова... Мне нужен он для прокрутки страницы, не имея необходимость создавать функцию прокрутки для него...

Какие-либо идеи?

Спасибо,
Матовый

7
задан Community 23 May 2017 в 12:29
поделиться

4 ответа

Я не уверен, что это правильный способ справиться с этим.

Лучшим способом решения этой проблемы было бы поставить какую-то проверку внутри инструкций 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 там, где вы считаете нужным, либо с помощью наведения курсора, либо с помощью чего-то другого. линий.

3
ответ дан 7 December 2019 в 03:13
поделиться

Попробуйте отвязать событие нажатия клавиши из документа.

Я не знаю других способов сделать это.

HTH

0
ответ дан 7 December 2019 в 03:13
поделиться

Почему бы просто не обернуть условие вокруг event.preventDefault(); в вашем текущем коде?

0
ответ дан 7 December 2019 в 03:13
поделиться

Добавление нового обработчика не заменяет предыдущий, а добавляет новый. Возможно, вы ищете jQuery # unbind , если пытаетесь удалить предыдущий обработчик, но если вы собираетесь часто включать и выключать его, вам, вероятно, будет лучше с флагом сообщая вам, следует ли предотвратить использование по умолчанию или нет в вашем существующем обработчике.

Добавление и последующее удаление обработчика выглядит следующим образом:

function keypressHandler() { /* ... */};

$('#thingy').keypress(keypressHandler);

// ...elsewhere...
$('#thingy').unbind('keypress', keypressHandler);
5
ответ дан 7 December 2019 в 03:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: