用jquery捕获蜗牛

时间:2015-02-19 15:50:01

标签: jquery ajax autocomplete tags

我想用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 
            {
                 ....
            }
        }
}

1 个答案:

答案 0 :(得分:0)

@的{​​{3}}为64。

@没有关键代码。

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

这些密钥代码分别为1650。 为了捕获这些类型的键事件,您需要具有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 @