jQuery UI自动完成:清除以前的搜索项
jQuery UI Autocomplete: Clear Previous Search Term
在jQuery UI Autocomplete小部件的keydown事件中,默认的case语句有以下代码:
default:
// keypress is triggered before the input value is changed
clearTimeout( self.searching );
self.searching = setTimeout(function() {
// only search if the value has changed
if ( self.term != self.element.val() ) {
self.selectedItem = null;
self.search( null, event );
}
}, self.options.delay );
break;
从上面代码的第六行可以看出,如果用户两次输入相同的值,就会阻止执行。这在大多数情况下是有意义的,但在我的场景中,这会导致问题。
我正在构建一个ajax应用程序,它有一个固定的标题,顶部有一个搜索输入。用户可以在搜索框中输入任何他们想要的东西,然后会弹出一个div,显示与他们查询匹配的搜索结果。如果用户输入"abc"并点击结果,它将通过ajax加载相应的页面并清除搜索框。问题是,如果用户再次输入'abc',则不会触发搜索方法,因为他们输入的内容与他们上次搜索的内容匹配。
有没有清除自我的方法?当用户单击搜索结果时,在小部件中存储的词值?或者是否有其他方法可以解决我的问题,而不必制作我自己版本的自动完成小部件?
谢谢
执行以下操作将重置先前的搜索项:
$('#AutocompleteElementID').data().autocomplete.term = null;
如果在选择项时执行以下操作,它将清除之前的搜索词,并在再次输入相同的值时让小部件执行搜索。
不幸的是,
$(this).data().autocomplete.term = null;
不清除输入字段。要做到这一点,下面的工作:
close: function(event, ui) {
// Close event fires when selection options closes
$('input')[0].value = ""; // Clear the input field
}
如果自动补全函数返回self,那么对于自动补全元素,您应该能够调用
$yourAutoCompleteElement.term = null;
close: function(event, ui)
{
// Close event fires when selection options closes
$(this).data().autocomplete.term = null; // Clear the cached search term, make every search new
},
这对我不起作用:
$(this).data().autocomplete.term = null;
然而,这确实为我工作在jQuery UI - v1.10.2:
$(this).data().term = null;
你应该试试:
$("#AutocompleteElementID").autocomplete("instance").term = null;
让我知道它是否适合你
最新版本的jQuery/jQuery UI的api发生了变化。
现在在小部件实例上访问属性的正确方法是:
$("#AutocompleteElementID").autocomplete("instance").term = null;
代码示例:http://jsfiddle.net/altano/sdpL17z5/
验证可以使用jQuery UI 1.11.4和jQuery 2.2.3
清除文本字段后,您可以通过调用jquery ui autocomplete "search"方法使用一个空字符串来重置先前的搜索。
$('#AutocompleteElementID').autocomplete( "search", "" );
默认情况下,在显示任何项之前必须满足最小搜索长度,因此它有效地清除搜索而不显示所有结果。
http://api.jqueryui.com/autocomplete/method-search
这应该是一个稳定的方式来处理这种情况,因为搜索方法并没有随着时间的推移而改变。
- 搜索不清除筛选器
- 清除网格中的存储和加载搜索结果
- 如何在不隐藏键盘的情况下清除输入搜索?(手机)
- jQuery Datatables:如何清除列搜索筛选器
- 清除搜索词,并在选择任何项目后重新加载 Select2 输入的所有项目
- jQuery/Javascript:如何使用Javascript或jQuery清除文本框上的最近搜索
- 谷歌表格循环搜索字符串并清除相邻单元格
- 数据表清除搜索输入和正则表达式
- 搜索字段,清除焦点上的默认文本-FF 3.6
- 流星:搜索源没有´t清除搜索
- 仅在 Firefox 中,当我单击任何地方时,我的 Twitter 提前输入搜索输入会清除
- Handsontable标题搜索,输入文本,在滚动时间歇性清除
- jQuery UI自动完成:清除以前的搜索项
- 清除搜索框后触发事件
- 在离子搜索栏中清除文本
- 如何刷新过滤搜索时的“清除”按钮;在文本的边缘点击
- 搜索后清除输入
- 清除输入文本时如何隐藏 ajax 搜索结果
- 为什么当我清除/删除要在输入框中搜索的值时,我的所有
- 都保持选中状态
- 清除搜索框,单击其中的小“x”