#javascript #autocomplete #yui
#javascript #автозаполнение #yui
Вопрос:
Я использую автозаполнение YUI 2, у меня есть собственный веб-сервис, который предоставляет рекомендации.
Всякий раз, когда пользователь вводит «» (пробел), предложения не отображаются. Например, если пользователь вводит « foo bar
«, то предложения отображаются до « foo
«, но как только пользователь вводит » «, то предложения не отображаются.
Я проверил вызовы Ajax и заметил, что пробел заменен на «
«. Таким образом, после пробела каждый вызов Ajax содержит «
«, и именно поэтому никакие записи не извлекаются из базы данных.
Я попытался установить пробел в качестве разделителя.Если мы используем пробел в качестве разделителя, то он покажет предложения для нового термина (который пользователь ввел после пробела). Например, если вы введете « foo bar
«, то после пробела появится предложение для « bar
«, в то время как я хочу предложения для полного термина « foo bar
«.
Я хочу отобразить предложение для полного термина, независимо от того, что пользователь ввел, включая пробел.
Есть ли какой-либо способ справиться с этим в YUI?
Ответ №1:
Закодировал URL-адрес методом переопределения generateRequest
, и это сработало 🙂
myAutoComp.generateRequest = function(sQuery) {
return "myProject/index.php?query=" encodeURIComponent(sQuery);
};
Комментарии:
1. @zladuric: Ты дал мне шанс ответить самому 🙂
Ответ №2:
YUI().use('autocomplete', 'autocomplete-highlighters', function (Y) {
Y.one('#ac-input').plug(Y.Plugin.AutoComplete, {
resultHighlighter: 'phraseMatch',
source: 'your url'
});
});
У меня это работает нормально.
Комментарии:
1. Не могли бы вы, пожалуйста, добавить что-нибудь к своему ответу? Поскольку я не уверен, как это связано с пространством?
2. @zladuric: Я думаю, My_Boon говорит о YUI3. Я пытаюсь использовать YUI2.
3. Да, вы указали это в вопросе. Вот почему я начал писать ответ, когда вы меня опередили 🙂