用 jquery 捕捉蜗牛

Capturing the snail with jquery

我想用 Ajax 创建一个标签系统。我会使用与 facebook 相同的系统,也就是说,当您按下滚动功能时,会激活自动完成各种朋友姓名。我的问题是:如何使用事件 "keydown" keyCode 和函数捕获 "at sign"?我感谢可能的帮助。

$(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 
            {
                 ....
            }
        }
}

@Windows alt code 是 64。

@没有键码。

这是因为你从不直接输入@,你按Shift然后按2

它们的关键代码分别是 1650。 为了捕捉这些类型的按键事件,你需要对modifier keys有特殊的逻辑。当用户按下 Shift(或 CtrlAlt 等)时,您需要输入一个特殊的循环记住之前按下的内容,并记住直到释放每个键。

您要查找的序列是:

Keydown
Catch key #16
Enter loop
Catch key #50
Trigger tag lookup
Keyup
Exit modifier loop

在我看来,只捕获包含文本字符 @.

的字段更容易

如果您想查看一些示例代码,here's a little fiddle 我是为测试而构建的。如果您在字段 中按 2,则您键入 Shift + 2在现场,也是一样的反应。


编辑:

我忘了说,浏览器按键事件包含特殊属性,表示 shift、control 和 alt。

对于像 Shift + 2 这样的单个事件,您的测试可能如下所示:

if( e.keyCode === 50 && e.shiftKey ){ // do logic for @ }

这不是很可扩展,但它适用于小型用例。我更新了 the fiddle from above 以捕获 2@.