javascript - jQuery UI 自动完成 : Clear Previous Search Term

标签 javascript jquery jquery-ui autocomplete

在 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/

相关文章:

javascript - Flex-basis 不扩展宽度

javascript - 在 react js 状态下更新 json 数组

javascript - Jquery 脉动来自不同的颜色

javascript - 在 Javascript 中覆盖 window.close

javascript - 如何在 Javascript 中执行线程

javascript - 打开时无法通过 AJAX 在 jQuery UI 对话框中显示数据

javascript - jquery Accordion 动画没有方法

javascript - 如何将当前日期转换为数字格式?

javascript - 带日期的周数计数器

javascript - 如何在 Angular js APP 的 config.js 中正确注入(inject) adalprovier