2012-08-02 84 views
0

总结:添加的所有项目的类别需要与项目名称一起保存。这样就可以在提交时传输此类别信息,以便使用正确的查询(与正确的表格有关)。想法?jQueryUI类别通行证类别信息

我需要做的是,当用户选择他们正在搜索的内容(从自动完成下拉菜单中选择)时,类别信息(又名类别名称)也会记录在某处。

这个想法是,当用户按搜索,他们正在寻找的短语以及类别名称也发送。推理:你有3张桌子,其中一张包含汽车信息,一张在动物身上,另一张在外国人身上。如果所涉及的表已经确定(从类别信息中),则不需要全部查询3。

与搜索所有3问题是,你可能有一个名为海绵鲍勃外星人,以及动物等

这里是我们正在处理(从jQueryUI的网站)的代码:

$.widget("custom.catcomplete", $.ui.autocomplete, { 
    _renderMenu: function(ul, items) { 
     var self = this, 
      currentCategory = ""; 
     $.each(items, function(index, item) { 
      if (item.category != currentCategory) { 
       ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>"); 
       currentCategory = item.category; 
      } 
      self._renderItem(ul, item); 
     }); 
    } 
}); 

我的想法是,品类齐全的功能中,下选择事件:

$(function() { 
     $("#search").catcomplete({ 
      delay:0, 
      source: "query/encode-json.php?term="+ $("#search").val(), 
      select: function(event, ui){ 

      } 
     });  
    }); 

是与所选项目相关联的类别,可以发送/秒在某处。我遇到的问题是,我可以在窗口小部件功能(item.category)中获取此信息,但该信息在select事件中不可用(直接)。这是有道理的,因为小部件只填充列表,它不处理选择事件(我在想),但不知何故我需要能够访问这些信息。我的想法是找到索引并从那里倒退,但似乎并不奏效。另一个选项(更基本的)是每次小部件循环播放时,类别名称将被添加到li元素的标题字段中。

我一直在尝试几个小时,没有得到任何解决方案。

感谢您的任何光线,你可能会流下:)

回答

0

想出了一个办法。这是我结束了代码:

$(".ui-menu-item").live('click', function(e) { 
     cat = $(this).prevAll(".ui-autocomplete-category:first").text(); 
    }); 

起初我曾与它的点击枝节问题,因为我不知道我需要它的活边等于是试图这样:

$(".ui-menu-item").click(function() { 

    }); 

所以,它的功能是当选择一个搜索结果(点击)时,上面类别的文本被获取并分配给cat变量。我已经设置这个变量传递到重新进行搜索的搜索页面:

function test(){ 
         var i = document.createElement('input'); 
         i.type = 'hidden'; 
         i.name = 'cat'; 
         i.value = cat; 
         document.getElementById("searchForm").appendChild(i); 
        } 

来源:jquery find closest previous sibling with class