В событии keydown виджета автозаполнения jQuery UI оператор 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, хранящееся в виджетах, когда пользователь нажимает на результат поиска? Или есть другой способ решить мою проблему без необходимости готовить мою собственную версию виджета Autocomplete?
Спасибо