Javascript нажмите код клавиши "+1 ввод" и "-1 ввод"
Кто-нибудь знает, как обнаружить нажатие клавиш кода "+1 ввод" и "-1 ввод" в Javascript, пожалуйста. Я хотел бы обнаружить при нажатии клавиш ONE BY ONE, а не в одно время.
Но когда я написал следующие коды, никакого эффекта не было.
// +1 enter
$(document).keydown(function(e) {
if (e.keyCode == 107 && e.keyCode == 49 && e.keyCode == 13) {
window.alert("+1");
}
});
// -1 enter
$(document).keydown(function(e) {
if (e.keyCode == 109 && e.keyCode == 49 && e.keyCode == 13) {
window.alert("-1");
}
});
Для ваших профессиональных комментариев, пожалуйста.
2 ответа
Для этого необходимо иметь возможность отслеживать предыдущие нажатые клавиши. Попробуйте следующее:
// These are just used to display the result in the DOM--you can delete this
var $keyCodes = document.getElementById('key-codes');
var $result = document.getElementById('result');
// Used to keep track of your key presses
var trackKeyCodes = (function() {
// Keep a private array of key codes to track
var keyCodes = [];
// This is the actual function that gets stored in trackKeyCodes
return function(keyCode) {
// Only store the last 3 key codes
if (keyCodes.length === 3) keyCodes.splice(0, 1);
// Add the next key code
keyCodes.push(keyCode);
// This just displays it in the DOM for you to see--you can delete this
$keyCodes.innerHTML = keyCodes.join(', ');
return keyCodes;
};
})();
// Used to actually check the key presses
var checkKeyCodes = function(keyCodes, first, second, third) {
return keyCodes[0] === first && keyCodes[1] === second && keyCodes[2] === third;
};
// +1 enter
$(document).keydown(function(e) {
var keyCodes = trackKeyCodes(e.keyCode);
if (checkKeyCodes(keyCodes, 107, 49, 13)) {
$result.innerHTML = '+ 1';
} else if (checkKeyCodes(keyCodes, 109, 49, 13)) {
$result.innerHTML = '- 1';
} else {
$result.innerHTML = '';
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
KeyCodes: <span id="key-codes">-</span>
</p>
<p>
Result: <span id="result">-</span>
</p>
Вы можете использовать следующую функцию:
$(document).keydown((function() {
var codes = [];
return function(e) {
if (e.keyCode == 107 || e.keyCode == 109 || e.keyCode == 49 || e.keyCode == 13) {
codes.push(e.keyCode);
if (codes.toString().indexOf('107,49,13') >= 0) {
alert('+1');
codes.splice(0, codes.length);
} else if (codes.toString().indexOf('109,49,13') >= 0) {
alert('-1');
codes.splice(0, codes.length);
}
} else {
codes.splice(0, codes.length);
}
};
})());
По сути, вам просто нужно найти способ сохранить ранее нажатые клавиши, а затем проверять их при каждом нажатии новой клавиши. В этом случае он хранится в переменной в закрытии IIFE.