【发布时间】:2012-01-09 21:51:03
【问题描述】:
在 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”,则不会触发搜索方法,因为他们输入的内容与他们上次搜索的内容相匹配。
当用户点击搜索结果时,有没有办法清除存储在小部件中的 self.term 值?或者有没有其他方法可以解决我的问题,而无需编写我自己的自动完成小部件版本?
谢谢
【问题讨论】:
-
如果有一个事件回调来管理它会很好。这样您就可以自己决定是否以及何时运行搜索。以下解决方案运行良好。
标签: javascript jquery jquery-ui autocomplete