Javascript:如何将最后两个字符键入文本区域?

Javascript:如何将最后两个字符键入文本区域?,javascript,jquery,string,textarea,Javascript,Jquery,String,Textarea,获取文本框中键入的最后两个字符的最佳方法是什么? 我需要键入最后2个字符,而不是整个字符串的最后两个字符 谢谢你的帮助 您需要捕获文本区域上的按键事件,然后记录按下的按键。请注意,这将捕获箭头键、shift、alt等,因此如果您只需要字符,则需要将它们过滤掉 简单的例子: var keyPresses = []; textarea.onkeypress = function(ev){ ev = ev || window.event; var key = ev.keyCode ||

获取文本框中键入的最后两个字符的最佳方法是什么?

我需要键入最后2个字符,而不是整个字符串的最后两个字符


谢谢你的帮助

您需要捕获文本区域上的
按键
事件,然后记录按下的按键。请注意,这将捕获箭头键、shift、alt等,因此如果您只需要字符,则需要将它们过滤掉

简单的例子:

var keyPresses = [];
textarea.onkeypress = function(ev){
   ev = ev || window.event;

   var key = ev.keyCode || ev.which;
   keyPresses.push(key);
}

下面是使用jQuery执行此操作的演示,同时显示输入的最后两个字符:

资料来源:

var keys = [];
$('#target').keypress(function(e) {
    keys.unshift(e.which);
    update();
});

function update() {
       $('#last')
           .prepend($('<li/>').text(String.fromCharCode(keys[0])))
           .children(':eq(2)').remove();
}
var-keys=[];
$(“#目标”)。按键(功能(e){
键。取消移位(例如,哪个键);
更新();
});
函数更新(){
$(“#最后一个”)
.prepend($('
  • ').text(String.fromCharCode(键[0])) .children(“:eq(2)”)。删除(); }
  • 此演示捕获文本区域上的按键事件,将值反移到数组中(因为索引代表自按下该键以来已按下的键数),然后更新显示

    显示更新只需将第一个值从数组推送到
    的顶部,并删除列表中索引2处的子项(如果有)

    另外请注意,由于jQuery处理
    .keypress()
    的方式,您不必过滤掉修饰符或箭头键

    更新
    请参阅Tim Down对我的回答的评论,了解应进行哪些过滤的解释。基于Chrome的快速测试,我最初的注释是错误的。

    实际上,您必须过滤掉不可打印的密钥。哪些键产生
    keypress
    事件因浏览器而异。例如,Firefox为大多数不可打印的键生成
    keypress
    事件,而jQuery将为大多数键提供
    which
    值0,尽管也有一些例外,例如backspace会生成
    which
    值8。还有其他的变化,我建议参考更多细节。jQuery本身并没有隐藏太多的复杂性。@Tim-谢谢你们指出这一点,我已经更新了我的答案,让人们参考你们的评论。