【发布时间】:2011-03-28 19:33:43
【问题描述】:
获取文本区域框中输入的最后两个字符的最佳方法是什么?
我需要输入最后两个字符而不是整个字符串的最后两个字符。
感谢您的帮助!
【问题讨论】:
标签: javascript jquery string textarea
获取文本区域框中输入的最后两个字符的最佳方法是什么?
我需要输入最后两个字符而不是整个字符串的最后两个字符。
感谢您的帮助!
【问题讨论】:
标签: javascript jquery string textarea
您需要在 textarea 上捕获 keypress 事件,然后记录被按下的键。请注意,这将捕获箭头键、shift、alt 等,因此如果您只想要字符,则需要将它们过滤掉。
简单示例:
var keyPresses = [];
textarea.onkeypress = function(ev){
ev = ev || window.event;
var key = ev.keyCode || ev.which;
keyPresses.push(key);
}
【讨论】:
这是一个使用 jQuery 进行的演示,同时显示最后输入的两个字符:http://jsfiddle.net/Ender/5gUHb/
来源:
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();
}
此演示捕获文本区域上的 keypress 事件,将值移到数组上(因为索引表示自按下该键以来已按下的键数),然后更新显示。
显示更新只是将数组中的第一个值推送到 <ul> 的顶部,并删除列表中索引 2 处的子项(如果有)。
另外请注意,由于 jQuery 处理 .keypress() 的方式,您不必过滤掉修饰符或箭头键。
更新 请参阅 Tim Down 对我的回答的评论,了解应该进行哪些过滤。根据 Chrome 中的快速测试,我最初的注释是错误的。
【讨论】:
keypress 事件因浏览器而异。例如,Firefox 会为大多数不可打印的键生成 keypress 事件,而 jQuery 将为大多数键提供 0 的 which 值,但也有一些例外,例如退格会产生 8 的 which 值。是其他变体,我建议参考unixpapa.com/js/key.html 了解全部详细信息。 jQuery 本身隐藏了非常少的复杂性。