jquery autocomplete从下拉菜单中删除所选的li项目

时间:2011-07-07 19:00:16

标签: jquery select autocomplete html-lists

我正在使用jquery autocomplete(1.8)填充标签,就像在http://net.tutsplus.com/tutorials/javascript-ajax/how-to-use-the-jquery-ui-autocomplete-widget/中解释的一样。

我需要的是从下拉菜单中选择LI项目后,该项目应从列表中删除。

在自动完成的选择部分,我尝试使用像

这样的diff方法获取当前的LI
$(this).get(0).tagname //which return undefined 
e.target.id //which return id of textfield to which autocomplete is bound

1 个答案:

答案 0 :(得分:3)

假设您完全按照链接到的教程执行:

  1. 在附加自动填充之前,创建一个空数组以保存应忽略的项目(var ignored=[];)。您可以将它放在全局范围内,以确保它可以在任何地方访问(放在$(function() { ...之前)。
  2. 关于source回调的定义(格式化结果),请替换此

    //process response
    $.each(data, function(i, val){
        suggestions.push(val.name);
    });
    

    用这个:

    //process response
    $.each(data, function(i, val){
        if(ignored.indexOf(val.name) == -1) {
            suggestions.push(val.name);
        }
    });
    
  3. 然后,在select回调中,将所选项的值添加到ignored数组中:

    ignored.push(ui.item.value)
    
  4. 如果用户点击了删除链接,您可能希望“取消忽略”该项目。在删除处理程序定义中,在第一行添加:

    var text = $(this).parent().find('a').remove().end().text();
    var position = ignored.indexOf(text);
    if(position != -1) {
        ignored.splice(position, 1);
    }
    // rest of the original code below...