Привязать клавишу (для перехода на страницу с возвратом), только если клавиша НЕ нажата в поле ввода? - PullRequest
1 голос
/ 20 сентября 2010

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

$(document).bind("keydown", function(e){
    if (e.keyCode) code = e.keyCode;         // für alle Browser
    else if (e.which) code = e.which;         // für ie
    if(code==8) {
    $("#outer-frame").fadeOut(400, function (){ //content fade-out
        history.back(-1); //gehe einen Schritt in der Browser-History zurück
});
    return false; // Browser bricht ab
}
});

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

PLS, помогите мне!Это так раздражает, если что-то просто перестало работать.

Я использовал селектор: focus из css вроде if ($ ("input: focus") ...

Просто хочу добавить, что браузерПереключатель не от меня, событие связывания, и если (code == 8) было также мое кодирование, исчезновение и история, но ничего уникального, вы найдете множество примеров, которые я делал во время моего исследования о другом поведении браузера (где янашел какой-то похожий код, но я думаю, что это jQuery ... и jQuery потрясающий!).

Я так счастлив решениями, предоставленными Ken Egozi и SimpleCoder, и очень хочу поблагодарить вас обоих за вашепомощь!

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

Вам нужно продолжить (вернуть true), если он нажал клавишу внутри текстовой области, текстового поля или поля пароля.

Добавьте

if ($(e.target).is("textarea, input[type=text], input[type=password]")) return true;

в ваш обработчик, перед if (code==8) битом

0 голосов
/ 20 сентября 2010

Я бы сделал это:

$(document).bind("keydown", function(e) {
    if ((e.target.nodeName.toLowerCase() != "input" && e.target.nodeName.toLowerCase() != "textarea") && e.which == 8) {
        $("#outer-frame").fadeOut(400, function() {
            history.back(-1);
        });
        return false; // unterbricht die Verarbeitung durch den Browser
    }
});

Также, как вы знаете, jQuery автоматически нормализует свойство e.which так:

if (e.keyCode)
    code = e.keyCode; // für alle Browser
else if (e.which)
    code = e.which; // für ie
if (code == 8) {

можно записать как

if (e.which == 8) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...