Используя Jquery, почему эта функция вызывается, когда я нажимаю только один из двух ключей?
У меня есть этот код:
$(document).bind('keydown', 'ctrl+1', function () {
alert('You found the hotkey ctrl+1!');
});
но если я нажимаю на или Control или 1 ключ, этот код, кажется, срабатывает. Я только хочу, чтобы этот код срабатывал, когда и клавиши нажаты.
может ли кто-нибудь уточнить, что мне не хватает?
10 ответов
document.body.addEventListener('keypress', function (event) {
var key = event.which || event.keyCode;
if(key.ctrlKey && key == 49){
alert("Ctrl+1 pressed);
}
}
Это должно помочь. Вы добавляете прослушиватель событий в тело HTML-кода и слушаете, какая клавиша была нажата.
$(document).ready(function () {
document.body.addEventListener('keypress', function (event) {
var key = event.which || event.keyCode;
if (key.ctrlKey || key == 49) {
alert("Ctrl+1 pressed");
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<p>empty page</p>
</body>
</html>
сначала извините за мой плохой английский, ключевое слово " + " становится селектором css, не является слушателем события клавиатуры. (keydown, нажатие клавиши, keyup)
в этом контексте вам не нужен селектор css для обнаружения ключа, эта магия соответствует событию, по этой причине есть функция, которая получает событие ...функция ( событие ) или функция (e), этот параметр constain все, что вам нужно.
теперь события indetifies ключ собственность "что" или собственность "код", вот своего рода комплекс, потому что wich и keycode, зависит от поддержки браузера
пока, возможно, необходимо проверить событие keydown на странице jquery, наблюдать за строкой 41 и результатом при нажатии клавиши, особенно код ключа и wich atrributes.
наконец, целью является обнаружение клавиши ctrl simultanius с другой клавишей, важно знать, что это специальная клавиша, и то, что число должно быть заменить ctrlKey и оценить число по свойству, которое или код ключа.
jQuery ссылка на keydown и пример, которые позволяют узнать, какой номер ключа (который или код ключа) вы нажимаете здесь
ваш код, наконец, как это
$(document).bind('keydown', function (e) {
if((e.crtlKey && (e.which==49)) || (e.crtlKey && (e.which==97)) ){
alert('You found the hotkey ctrl+1!');
}
});
число 49 в коде соответствует числу = "1"в алфавитной части клавиатуры.
число 97 соответствует числу = " 1 " в цифровой клавиатуре часть
вы можете использовать функцию keydown jQuery напрямую и проверить, нажаты ли клавиши.
$('body').keydown(function (e){
if (e.ctrlKey && e.keyCode == 49)
alert("Ctrl+1 pressed");
});
непосредственно используйте событие jquery вместо bind. Используйте ctrlKey
свойство объекта события, чтобы узнать, был ли нажат ctrl.
$(document).keydown("1",function(e){
if(e.ctrlKey)
alert("Ctrl+1 pressed");
});
не проверено, но я думаю, что это должно работать.
вам нужно проверить для keydown событие, а также если ctrl нажатие клавиши
$(document).keydown('1',function(e) {
if (e.ctrlKey) {
alert('ctrl 1 was pressed.');
}
});
чтобы уточнить ваш вопрос, вы пропустили проверку события ctrl.
использовать горячие клавиши jQuery . Это сделает вашу жизнь намного проще. Вы сможете сделать что-то вроде:
$(document).bind('keydown', 'ctrl+1', function () {
alert('You found the hotkey ctrl+1!');
});
другое библиотека ловушка мыши, это позволяет вам делать такие вещи, как:
Mousetrap.bind('command+shift+k', function(e) {
highlight([6, 7, 8, 9]);
return false;
});
Вы делаете это неправильно. Событие Key down срабатывает в тот момент, когда вы нажимаете клавишу, и ему все равно, нажимаете ли вы другую клавишу.Пожалуйста, используйте событие keyup.
$(document).bind('keyup', 'ctrl+1', function () {
alert('You found the hotkey ctrl+1!');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
попробуйте это:
$(document).keypress("1",function(e) {
if(e.ctrlKey)
alert("You found the hotkey ctrl+1!");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<p>Press CTRL+1 to show alert.</p>
Подробнее здесь.
эта функция будет вызываться при каждом нажатии клавиши, но я проверил коды клавиш в состоянии. мы можем реализовать необходимую функциональность в "условии if". Условие будет выполняться только при нажатии клавиши ctrl и 1.
$(document).on('keydown', 'body', function(event) {
if (event.ctrlKey && event.keyCode == 49) {
alert("Ctrl+1 pressed");
}
});