我正在尝试修改this example
,但我很难在变量中获取最后2个字符,因此我可以看到用户是否输入了/c
。
var keys = [];
$('#target').keypress(function(e) {
keys.unshift(e.which);
$('#last')
.prepend($('<li/>').text(String.fromCharCode(keys[0])))
.children(':eq(2)').remove();
});
我无法弄清楚如何将这部分变成变量,以便我可以检查它
$('#last')
.prepend($('<li/>').text(String.fromCharCode(keys[0])))
.children(':eq(2)').remove();
我知道这是在<li>
之前,但我需要将它存储在一个简单的变量中。
最终,当用户键入的最后2个字符为if
时,我需要触发/c
语句。
if (somevariable == '/c') {
// do something
}
答案 0 :(得分:2)
只需使用String.fromCharCode(parseInt(keys[0]))
将其保存到字符串中并检查它是否与您的字符串匹配然后执行任何操作,然后检查长度是否为2然后重置字符串。
var keys = [];
var input = [];
var findString = '/c';
$('#target').on('keypress', function(e) {
keys.unshift(e.keyCode || e.which);
updateN();
});
function updateN() {
//push into the input array
input.push(String.fromCharCode(parseInt(keys[0])));
//check if input is of valid length to be searched for string
if (input.length >= findString.length) {
//if last 2 keys match the string to be found
var keyFound = (input[input.length - 2] + input[input.length - 1]) == findString;
//if string found
if (keyFound) {
console.log("/c detected");
}
if (input.length > 20) {
//reset the array but keep last 2 indexes to keep the track of the pressed keys
input.splice(0, input.length - 2);
}
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="target">
&#13;
@Tim Down您必须过滤掉不可打印的密钥哪些密钥会产生按键事件因浏览器而异。例如,Firefox为大多数不可打印的键生成keypress
个事件,jQuery将为大多数事件提供0
的值,尽管有一些例外,例如退格,它产生的值为8还有其他变体,我建议提及unixpapa.com/js/key.html
以获取完整的详细信息。 jQuery本身隐藏了很少的复杂性