2012-06-02 28 views
7

我们可以动态添加和删除引导程序typeahead吗?动态添加和删除引导程序typeahead

意味着在某些情况下,我需要给一个文本框提供typeahaed功能,并且需要在另一种情况下为相同的输入框删除此功能。

回答

2

我已经使用了

$('.typeahead').removeClass('dropdown-menu'); 

$('.typeahead').addClass('dropdown-menu'); 

隐藏显示下拉建议。

6

是的,你可以。这是使用jQuery的方法.unbind()

例如很简单:

$('.typehead').typehead(); 
//and then you can dynamically unbind this plugin 
$('.typehead').unbind(); 
+0

Thankx!为你的时间。但我不能使用解除绑定。但我用 $('。typeahead')。removeClass('dropdown-menu'); 这种隐藏下拉的方法。并再次添加此类 –

+0

请谨慎使用此方法,因为这会从所选DOM元素中删除所有事件侦听器,而不仅仅是“模糊”,“焦点”,“输入”和“keydown” ')。 –

1

我不得不使用一种不同的(和hackier)解决方案,因为我每次更改typeahead数据并且无法获得其他答案。如果有人需要,我会把它留在这里。

取出事先键入的内容

var parent = $('.typeahead').parent(); 
var html = parent.html(); 
$('.typeahead).remove(); 
parent.html(html); 

加入事先键入的内容

$('.typehead').typehead(); 
6

我知道我迟到了,下面将删除,而不只是隐藏。

$('.typeahead').typeahead('destroy'); 
+1

+1当使用相同的字段进行填充时(例如在弹出窗口中),这会有所帮助。字段不会自动清除,这样可以在不干扰字段和/或其内容的情况下以静默方式移除'typeahead'。这也是正确的方法来删除键入 – Pierre

+0

这不适用于我的应用程序。它摆脱了完全不同区域的数据。但我重新使用了我的前端,因此我需要一些方法来刷新它所拖动的数据。 – user2847749

+0

不知道为什么它不适合你。你正在使用远程或预取?你使用IE吗? IE有时会有缓存问题。如果是IE,你可以尝试添加'$ .ajaxSetup({cache:false});'修复IE。 –

1

此代码适用于我。

var typeaheadEle = $('#myTypeahead').data('typeahead'); 
if (typeaheadEle) {typeaheadEle.source = [];} 

其中myTypeahead是输入元素的ID。

+0

这是使用Bootstrap v2.3.2的最佳方法,imo。 –

0

我发现$('.some-typeahead-parent .tt-dropdown-menu').hide();最适合用于多数据集typeahead。