0

我对键盘事件感到有点失落。

我想检测最后输入的最后 10 个字符,return 作为最后一个字符。

知道如何实施吗?我不是要代码,而是要逻辑和指导方针。

4

3 回答 3

3

Make an array and store all events in it, removing the front element when the length is > 10, and use that array when you get "return" as input.

Pseudocode:

var events = [];
function keypress(e) {
  if(e == "return") {
    console.log(events);
  }
  events.push(e);
  if(events.length > 10) {
    events.shift();
  }
}
于 2013-04-14T11:46:21.853 回答
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()

希望这可以帮助。

于 2013-04-14T12:11:02.233 回答
0

What you can do is to match the button you press with keycode, ie:

var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) { //Enter keycode
   //Do something
}

With this code if someone press "enter" you can do something.

Check this to know all the possible keycodes: http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

Hope it help.

于 2013-04-14T11:46:17.590 回答