2016-01-09 33 views
0

嗨我正在使用jquery檢測插入到textarea中的@符號。當檢測到這種情況時,會向服務器發出ajax請求以檢索用戶列表。用戶然後點擊用戶名,它將被添加到textarea中,並添加到select中,以便我可以通知相關用戶這個註釋;jquery檢查字符串是否已從textarea中刪除並從選項中刪除選項

$(document).on('click', '#fetchUsers li',function(e){ 
     var username = $(this).text(); 
     var user_id = $(this).attr('data-user-id'); 
     $('textarea.addNote').val(function(_, val){return val + username; }); 
     $(this).parent('ul#fetchUsers').html(''); 

     $('#addAUsertoNote') 
      .append($("<option></option>") 
       .attr("value",user_id) 
       .text(username)); 

    }); 

現在我的問題是,如果我刪除textarea的這個選項的值是在選項列表中的字符串@userone,但它不應該是。有誰知道是否以及如何檢查用戶名是否已被刪除並將其從選項組中刪除?

回答

1

你可以試試這個方法,如果每個用戶在文本區域添加keydown事件,每一次檢查:

$('textarea.addNote').keydown(function() { 
    var self = $(this); 
    var note = self.val(); 
    var users = $('#addAUsertoNote option').map(function() { 
     return $(this).text(); 
    }).get(); 
    users.forEach(function(user) { 
     if (!note.match("@" + user)) { 
      $('#addAUsertoNote option:contains(' + user + ')').remove(); 
     } 
    }); 
}); 
+0

將這場比賽在選擇@符號?因爲這不會在選擇文本中。 – 001221

+0

@ 001221它只在textarea中檢查@。 – jcubic

+0

@ 001221將keydown更改爲keyup並工作https://jsfiddle.net/dr651avp/ – jcubic

0

你的意思是排除已經從用戶的下一個列表點擊用戶名?

我會擴展檢索列表的函數來掃描@ w +字符串的textarea的內容並禁用任何匹配的列表選項。

你也可以看看由所選擇提供的多選擇菜單:https://harvesthq.github.io/chosen/#optgroup-support