Jquery 自动完成 UI - 多个字段没有结果

Posted

技术标签:

【中文标题】Jquery 自动完成 UI - 多个字段没有结果【英文标题】:Jquery autocomplete UI - No results on multiple fields 【发布时间】:2012-06-04 19:38:17 【问题描述】:

Andrew's answer to my comment 引发了这个问题。

根据他在上面链接中的精彩回答,问题底部的代码仅适用于 ONE 小部件。但它是杀手级的好代码,而且很有意义......我想我想要两全其美。不错的 JS,(如果可能的话)并且让 show() 的结果为零,这只是我们当时正在使用的元素。

正如我所见,这段代码 sn-p 是我的问题的主要症结:

来源:功能(请求,响应) jQuery.ajax( url: "/autocomplete.json", 数据: 术语:request.term , 成功:函数(数据) 如果(数据长度 == 0) jQuery('span.guest_investor_email').show(); jQuery('span.investor_field_delete_button').show(); 响应(数据); );

目前:

我的页面上有一个按钮,上面写着“添加更多信息”,每次单击它时,都会出现一个自动完成文本字段的新实例,其中包含一些隐藏字段和guest_investor_email 上的display:none;。 如果我使用自动完成文本字段,比如说 3 次,我在页面上有 3 个自动完成实例,第三个找到 0 个结果:代码将显示()guest_investor_email 文本字段的所有 3 个实例,而不仅仅是 @ 987654326@ 一个是空白的。

问题:

我如何得到类似的东西 jQuery(this).siblings(('span.guest_investor_email').show();上班?

this 是一个对象,而不是要选择的元素数组。如果不是this 我不介意,只要我知道如何处理它。谢谢。


完整代码:

jQuery(".auto_search_complete").live("点击", function() jQuery(this).autocomplete( 最小长度:3, 来源:功能(请求,响应) jQuery.ajax( url: "/autocomplete.json", 数据: 术语:request.term , 成功:函数(数据) 如果(数据长度 == 0) jQuery('span.guest_investor_email').show(); jQuery('span.investor_field_delete_button').show(); 响应(数据); ); , 焦点:函数(事件,用户界面) jQuery(this).val(ui.item.user ? ui.item.user.name : ui.item.pitch.name); 返回假; , 选择:函数(事件,用户界面) jQuery(this).val(ui.item.user ? ui.item.user.name : ui.item.pitch.name); jQuery(this).siblings('div.hidden_​​fields').children('.poly_id').val(ui.item.user ? ui.item.user.id : ui.item.pitch.id); jQuery(this).siblings('div.hidden_​​fields').children('.poly_type').val(ui.item.user ? "User" : "Pitch"); jQuery(this).siblings('span.guest_investor_email').hide(); jQuery(this).siblings('span.investor_field_delete_button').show(); jQuery(this).attr('readonly','readonly'); jQuery(this).attr('id', "investor-selected"); 返回假; ).每个(函数() jQuery(this).data("自动完成")._renderItem = function(ul, item) 返回 jQuery(" ") .data("item.autocomplete", item) .append("

" + (item.user ? item.user.name : item.pitch.name) + "" + (item.user ? item.user.investor_type : item.pitch.investor_type) + " - " + (item.user ? item.user.city : item.pitch.city) + "

" ) .appendTo(ul); ; ); );

【问题讨论】:

【参考方案1】:

我没有完全理解您想要实现的目标,但我认为您想获得绑定 .live 事件的元素,对吧?

jQuery(".auto_search_complete").live("click", function() 
    var $this = $(this);
    jQuery(this).autocomplete(
        minLength: 3,
        ...
        success: function (data) 
        if (data.length == 0) 
    jQuery('span.guest_investor_email').show();
            $this.siblings('span.investor_field_delete_button').show();
        
    ...

【讨论】:

我已经更新了问题,并会尝试你的答案。谢谢! Uncaught TypeError: Object [object htmlLabelElement],[object HTMLSpanElement],[object HTMLSpanElement],[object HTMLDivElement] has no method 'show'看起来它只是传递了一个字符串,也许吧?或者至少不是一个 jQuery 对象。有些东西是错过了。 评论的过去编辑。你是个天才。或者至少有帮助 @tpaksu 谢谢! 伙计,我试图在任何地方添加该 var,但在你所做的地方。我把它放在成功中,就在自动完成之后(......我显然没有做对,所以谢谢。

以上是关于Jquery 自动完成 UI - 多个字段没有结果的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI 自动完成 - 没有结果消息

使用箭头键浏览结果时在 jQuery UI 自动完成上触发“选择”事件

Jquery ui自动完成填充带有ID​​的隐藏字段

在 jQuery UI 自动完成上没有检测到结果

jQuery UI 自动完成 - 输入与结果集不匹配时不显示结果

Jquery UI 自动完成。如何使用 innerHTML 在 div 中写入结果?