我觉得键盘事件有点迷失。
我想检测最后输入的10个字符作为最后一个字符。
知道如何实现它吗?我不是要求代码,而是要求逻辑和指导。
答案 0 :(得分:3)
创建一个数组并将所有事件存储在其中,当长度为>时删除前面的元素。 10,当你输入“return”时使用那个数组。
伪代码:
var events = [];
function keypress(e) {
if(e == "return") {
console.log(events);
}
events.push(e);
if(events.length > 10) {
events.shift();
}
}
答案 1 :(得分:1)
看到您正在使用jQuery,您可以绑定到keyup
事件,然后在键入时将数据存储在数组中,类似于:
<input id="myText"></input>
var textString = [];
$('#myText').on('keyup', function(eventData){
if(eventData.which === 13){ // check if enter/return was pressed
// It wasn't clear what you wanted to happen exactly on enter,
// so as an example the code simply alerts the last 10 chars.
alert('Enter was pressed. Your last 10 chars were: ' + textString.join(''));
return;
}
textString.push(this.value.slice(-1)); // store last character type in the array
// if adding the last entry increased the array passed the 10 characters
// remove the one from the beginning of the array
if(textString.length > 10){
textString.shift();
}
})
DEMO - 绑定keup
事件并存储最后10个字符
当你要求使用jQuery时,上面的代码使用jQuery的on()来绑定指定输入元素的keyup事件。
一旦进入事件,代码就会使用JavaScript Array.push()将新元素添加到数组的末尾,并使用JavaScript Array.shift()删除数组中的第一个元素。
为了获取最后输入的字符,代码使用JavaScript String.slice()来提取字符串的特定部分。
要在警报中将数组的值显示为字符串,代码使用的是JavaScript Array.join()。
希望这有帮助。
答案 2 :(得分:0)
您可以做的是将您按下的按钮与键码匹配,即:
var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) { //Enter keycode
//Do something
}
使用此代码,如果有人按“输入”,您可以执行某些操作。
选中此项以了解所有可能的密钥代码:http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
希望有所帮助。