在 jQuery UI 自动完成小部件的 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”,则不会触发搜索方法,因为他们输入的内容与上次搜索的内容相匹配。
当用户点击搜索结果时,有没有办法清除小部件中存储的 self.term 值?或者是否有另一种方法可以解决我的问题,而无需编写我自己的自动完成小部件版本?
谢谢
最佳答案
执行以下操作会重置之前的搜索词:
$('#AutocompleteElementID').data().autocomplete.term = null;
如果您在选择某个项目时执行以下操作,则会清除之前的搜索词,并在再次输入相同值时使小部件执行搜索。
关于javascript - jQuery UI 自动完成 : Clear Previous Search Term,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8329697/