Использование предотвращения по умолчанию, чтобы взять пробел - PullRequest
2 голосов
/ 02 июня 2009

У меня есть такой код, чтобы взять на себя функцию пробела:

    $(document).keypress(function (e) { 
        e.preventDefault();                            
        if (e.which == 32) {
            // func
        }
    }); 

К сожалению, это уничтожает все настройки по умолчанию для ключа.

Это:

    $(document).keypress(function (e) { 
        if (e.which == 32) {
            e.preventDefault();
            // func
        }
    }); 

К сожалению, неэффективен.

Как я могу предотвратить появление по умолчанию только пробела?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 02 июня 2009

Попробуйте это:

//e= e || window.event); you may need this statement to make sure IE doesn't keep the orginal event in motion
var code;  
if (e.keyCode) {
 code = e.keyCode;
} else if (e.which) {
 code = e.which;
 }
if (code == 32) {
 if (e.stopPropagation) {
 e.stopPropagation();
 e.preventDefault();
 }
 return false;
}
1 голос
/ 27 сентября 2013

Для некоторых вышеперечисленных вещей, таких как использование $, может быть немного запутанно. Поэтому я публикую свой ответ с кодом JavaScript. Добавьте это в любой файл, чтобы заблокировать пробел (или вы также можете добавить другие действия).

window.onkeydown = function (event) {
    if (event.keyCode === 32) {
        event.preventDefault();
    }
};

Ключевой код 32 - пробел. Для других кодов клавиш, проверьте этот сайт:

http://www.javascripter.net/faq/keycodes.htm

Удачи

0 голосов
/ 02 июня 2009

Попробуйте

$(document).keydown(function(e){<br>
    if(e.which==32) e.preventDefault();<br>
});

Я использую его для блокировки клавиши Esc и прекрасно работает для меня.

0 голосов
/ 02 июня 2009

Почему это неэффективно?

Возможно, вы хотите использовать оператор switch () вместо if-then-else?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...