HTML-текстовые поля не работают - PullRequest
0 голосов
/ 21 мая 2018

Я хочу перенаправить с текущей на следующую страницу при нажатии кнопки F1.Страница перенаправляется правильно, но текстовые поля текущей страницы не работают.

$(document).ready(function () {
    $("body").keydown(function (e) {
        e.preventDefault();
        if (event.keyCode === 112) {
            window.location.href = "../nextpage.aspx";
        }
    });
});

Что нужно сделать, чтобы решить проблему?

Ответы [ 4 ]

0 голосов
/ 21 мая 2018

e.preventDefault(); запрещает все нажатия клавиш на вашей странице.
просто измените свой код следующим образом:

$(document).ready(function () {
    $("body").keydown(function (e) {
        if (e.keyCode === 112) {
            e.preventDefault();
            window.location.href = "../nextpage.aspx";
        }
     });
});
0 голосов
/ 21 мая 2018

В настоящее время ваш метод "protectDefault ()" срабатывает при всех обстоятельствах, мешая другим клавишам работать должным образом.Вам действительно нужно сделать это только в том случае, если вы обнаружите, что клавиша является F1, в частности:

Демонстрация нерабочего кода:

Обратите внимание, что невозможно что-либо набратьв текстовое поле, потому что поведение каждой клавиши по умолчанию подавлено.

$(document).ready(function() {
  $("body").keydown(function(e) {
    e.preventDefault();
    if (e.keyCode === 112) {
      window.location.href = "../nextpage.aspx";
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" />

Фиксированная версия:

Я просто перемещаю warnDefault () внутри оператора if, который определяет точную нажатую клавишу.

$(document).ready(function() {
  $("body").keydown(function(e) {
    if (e.keyCode === 112) {
      e.preventDefault();
      window.location.href = "../nextpage.aspx";
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text"/>

PS Я также исправил ошибку e / event в вашем выражении if.

0 голосов
/ 21 мая 2018

Проблема:

Вы определяете event как e, но используете его как event

Код:

$(document).ready(function () {
        $("body").keydown(function (e) {
            if (e.keyCode === 112) { // error was here
                e.preventDefault(); // should be inside if statement
                window.location.href = "../nextpage.aspx";
            }
   });
});

Обновлен код (лучше)):

$(document).ready( () => $("body").keydown((e) => e.keyCode == 112&&(e.preventDefault(),(window.location.href= "../nextpage.aspx"))));
0 голосов
/ 21 мая 2018

изменение if (e.keyCode === 112) вместо if (event.keyCode === 112)

...