2014-03-31 69 views
0

我有一个文本输入,我正在解析用户名后跟@(@steve)。它很像Slack。当用户键入'@'时,显示与所有用户的对话。当他们键入一个“空间”时,对话关闭。我的问题是知道用户何时删除或退格@符号。如果发生这种情况,我需要关闭对话,但我坚持如何注册该事件。谢谢您的帮助,这里是我目前有:注册keyCode被删除

$scope.keyPress = function(keyCode) { 
    if(keyCode === 64) { 
    $scope.usersShow = true; 
    } else if(keyCode === 32){ 
    $scope.usersShow = false; 
    } 
}; 

回答

0

一个更好的办法来做到这一点(尽管我必须承认我从未考虑过编码这样的功能)将是检查光标所在,如果它之前的文本是一个以@(即匹配/(?:^|\s)@\S+$/)开始的不间断单词,则应显示对话框,否则将其隐藏。

+0

谢谢。该功能在称为Slack的聊天软件中实现,并且非常方便。这使得您可以键入评论,并通过在评论中的任何位置键入@usernames来通知不同的用户。对话只是为了能够点击并添加用户。所以基本上,我可以检查输入中的任何更改并针对当前字符运行正则表达式? – sturoid

+0

如何检查光标在哪里?这是否与事件有关? – sturoid

+0

检查输入(或textarea)元素的'selectionStart'和'selectionEnd'属性。 –