Javascript:如何将最后两个字符键入文本区域?
获取文本框中键入的最后两个字符的最佳方法是什么? 我需要键入最后2个字符,而不是整个字符串的最后两个字符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 ||
谢谢你的帮助 您需要捕获文本区域上的
按键
事件,然后记录按下的按键。请注意,这将捕获箭头键、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-谢谢你们指出这一点,我已经更新了我的答案,让人们参考你们的评论。