Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ESC button keydown (https://javascript.ru/forum/misc/21049-esc-button-keydown.html)

Smoker 26.08.2011 20:48

ESC button keydown
 
$(document).keydown(function(e) {
    if( e.keyCode === 27 ) {
        $('#button').click();
        return false;
    }
});

Я хочу сделать алиас клику по кнопке в виде нажатия на клавишу escape, есть 2 вопроса:

1. Если я что-то пишу в текстовом поле, затем нажимаю escape, то "нажатие" кнопки действительно происходит, повторное нажатие на escape к повторному "нажатию" уже не приводит: как будто теряется "фокус" на document, т.к. если кликнуть левой кнопкой мыши по странице, затем опять нажать escape, то всё OK. What the fuck?
2. Нажатие кнопки приводит к AJAX-запросу, который почему-то не происходит (в firebug запрос подсвечен красным, запрос якобы посылается, но ответ никакой не приходит, рядом с запросом красный крестик), если в данном коде опустить "return false". Почему?

melky 27.08.2011 00:13

Цитата:

Сообщение от Smoker (Сообщение 122740)
1. Если я что-то пишу в текстовом поле, затем нажимаю escape, то "нажатие" кнопки действительно происходит, повторное нажатие на escape к повторному "нажатию" уже не приводит: как будто теряется "фокус" на document, т.к. если кликнуть левой кнопкой мыши по странице, затем опять нажать escape, то всё OK. What the fuck?

документ теряет фокус. все хорошо. не стоит возвращать false из обработчика события, назначенного jquery - плюются часто

отменить действие по умолчанию можно ещё так
e.preventDefault();


Цитата:

Сообщение от Smoker (Сообщение 122740)
2. Нажатие кнопки приводит к AJAX-запросу, который почему-то не происходит (в firebug запрос подсвечен красным, запрос якобы посылается, но ответ никакой не приходит, рядом с запросом красный крестик), если в данном коде опустить "return false". Почему?

может стоит посмотреть в консоль и посмотреть, что происходит? Плагин называется Firebug, вызывается по F12 или в менюшке.

Smoker 27.08.2011 09:49

Цитата:

Сообщение от melky (Сообщение 122780)
может стоит посмотреть в консоль и посмотреть, что происходит? Плагин называется Firebug, вызывается по F12 или в менюшке.

Вроде бы из моих пояснений ясно, что я именно это и делаю.

melky 27.08.2011 09:53

"подсвечивается красным" - это неинформативно

Smoker 27.08.2011 15:15

Вложений: 1
melky, серьёзно? Я тоже так думаю.

Вот полный код:
<!DOCTYPE html>
<html>
<head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>
    $(document).keydown(function(e) {
        if( e.keyCode === 27 ) {
            alert('Pressed escape');
            $.post('/', function() { alert('OK'); });
            return false;
        }
    });
    </script>
</head>
<body>
</body>
</html>

Результат при нажатии escape: сначала окно с "Pressed escape", успешный запрос и затем окно с "OK":
Вложение 903

Если просто закомментировать "return false;", то при нажатии escape вылезет "Pressed escape" и неуспешный запрос:
Вложение 904

В чём ошибка?

P.S. Второй файл почему-то при заливке JPEG'ом стал.

sasha_zuev 16.01.2020 15:47

Кто-то понял в чём проблема?!


Часовой пояс GMT +3, время: 12:26.