[英]Detect entered character with JavaScript
当用户键入“ @”时,我想开始一个操作(启用自动完成功能)。 我有可用的jQuery。
通常在QWERTY键盘上是这样的:
$('textarea').live('keydown', function(e) {
if (e.which === 50) {
console.log('@ has been entered.');
}
});
但是,它在AZERTY键盘上无法正常工作。 键码= 50对应于E〜/ 2键。 要在AZERTY键盘中键入“ @”,请使用AltGr + à @ / 0键。
编辑:当输入@时,自动填充才会开始,并且仅在此之后。 例如,当有人输入“ Hello @”时,它将启动,但是当他键入“ Hello @nothing else”时,完整输入将不会执行任何操作。 示例: http : //mrkipling.github.com/jQuery-at-username/ (仅在QWERTY键盘上有效)。
使用keypress
而不是keydown
。 虽然keydown
涉及一种键的每个压, keypress
涉及翻译的字符,所以例如a
可以是不同的a
,而变速键被按下时,由字符工作,死键工作,并在键盘映射其他差异的处理。
如何检查@
是否输入为字段值的最后一个字符?
$("body").on("keyup", "textarea", function(e) {
if (this.value.indexOf("@") == this.value.length - 1) {
console.log("Starting autocomplete");
}
});
演示: http : //jsfiddle.net/FKhPW/2/
想到的唯一其他选择是计时器,用于检查文本输入的内容。
var patt=new RegExp(/^@/);
var charCheck = setInterval(function(){
if (patt.test($("#textInput").val())){
// initiate autocomplete
}
},100);
此代码将检查#textInput
元素的内容,并查看它是否与字符串开头的@
符号的正则表达式匹配。 如果是这样,则test()
函数的评估结果为true,您可以启动自动完成代码。
在这里,您可以进行工作演示: http : //jsfiddle.net/LxpQQ/
从我以前的回复:
希望它适合你的原因:)
码
source: function(request, response) {
if (request.term.indexOf("@") >= 0) {
$("#loading").show();
getTags(extractLast(request.term), function(data) {
response($.map(data.tags, function(el) {
return {
value: el.name,
count: el.count
}
}));
$("#loading").hide();
});
}
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.