2014-03-31 106 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'屬性。 –