我想用Ajax创建一个标签系统。我会使用相同的facebook系统,也就是说当你按下滚动功能时,会激活自动完成各种名字的朋友。我的问题是这样的:我如何捕捉" at sign"使用事件" keydown" keyCode和函数?我感谢可能的帮助。
$(document).on("keydown",'.text-area-commento', function(e)
{
if(e.keyCode === 64)
{
alert("tag");
}
if(e.keyCode === 13)
{
var id_post = $(this).attr('id');
var message = $(".commento"+id_post).val();
if (e.shiftKey) {
$(this).val( $(this).val() + "<br>" );
}
else
{
....
}
}
}
答案 0 :(得分:0)
@
的{{3}}为64。
@
没有关键代码。
原因是你从不直接输入@
,按 Shift 然后按 2 。
这些密钥代码分别为16
和50
。
为了捕获这些类型的键事件,您需要具有Windows alt code的特殊逻辑。当用户按 Shift (或 Ctrl , Alt 等)时,您需要输入一个特殊的循环来记住之前按下的内容,并且记住,直到每个钥匙都被释放。
您正在寻找的顺序是:
Keydown
Catch key #16
Enter loop
Catch key #50
Trigger tag lookup
Keyup
Exit modifier loop
在我看来,抓住包含文字字符@
的字段会更容易。
如果您想查看一些示例代码,我构建了modifier keys进行测试。如果您在字段或中按 2 ,则在字段中键入 Shift + 2 ,它会以相同的方式响应
我忘了提及,浏览器键事件包含指示shift,control和alt的特殊属性。
对于像 Shift + 2 这样的单个事件,您的测试可能如下所示:
if( e.keyCode === 50 && e.shiftKey ){ // do logic for @ }
这不是可扩展的,但它可以在小用例中使用。我已更新here's a little fiddle以同时抓住 2 和@
。