Как обрабатывать пространство в автозаполнении YUI

#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. Да, вы указали это в вопросе. Вот почему я начал писать ответ, когда вы меня опередили 🙂