В категории автозаполнения jQuery UI выбираются только результаты во всех категориях.Jquery

Программирование на jquery
Ответить
Anonymous
 В категории автозаполнения jQuery UI выбираются только результаты во всех категориях.

Сообщение Anonymous »

Я использовал демонстрационный исходный код автозаполнения jQuery UI для примера категорий (http://jqueryui.com/autocomplete/#categories), и он работает (запрос к базе данных, которая возвращает массив JSON).

Я создаю функцию поиска для художественной галереи, и мои категории — «Художники» и «Выставки». Я хочу показать результаты из одной или обеих категорий. Моя проблема в том, что результаты отображаются только тогда, когда поисковый запрос охватывает результат в обеих категориях.

Мой сценарий предложений использует поисковый запрос для запроса двух разных таблиц базы данных. Я форматирую и добавляю результаты в один массив JSON со строками для ["id"], ["value"], ["label"] и ["category"].

Итак, по поисковому запросу CORN результаты могут быть следующими:

Код: Выделить всё

  { label: "Christopher Corner", category: "Artists" },
{ label: "New Pictures From Cornwall", category: "Exhibitions" },
{ label: "Cornie Collins", category: "Artists" },
В тот момент, когда я ввожу поисковый запрос, возможные результаты отображаются только в том случае, если результат возможен во ВСЕХ моих категориях, а не в том, что я хочу, что один или несколько. Поэтому, когда я набираю CORN, я вижу Художника по имени Корнер и Выставку о Корнуолле, но как только я набираю E от CORNE, все варианты исчезают, включая Художника по имени Корнер (который, как я ожидаю, останется) .

Я новичок в jQuery и пользовательском интерфейсе jQuery и пытаюсь понять, где будет логика выбора элемента списка из любой категории, а не всех из них.

Я отредактировал и добавил свой код. Это файл внутренних предложений — search_suggestions.php:
А вот JS в моем разделе, который все настраивает:

Код: Выделить всё

    
.ui-autocomplete-category {
font-weight: bold;
padding: .2em .4em;
margin: .8em 0 .2em;
line-height: 1.5;
}


$.widget( "custom.catcomplete", $.ui.autocomplete, {
_create: function() {
this._super();
this.widget().menu( "option", "items", "> :not(.ui-autocomplete-category)" );
},
_renderMenu: function( ul, items ) {
var that = this,
currentCategory = "";
$.each( items, function( index, item) {
var li;
if ( item.category != currentCategory ) {
ul.append( "[*]" + item.category + "" );
currentCategory = item.category;
}
li = that._renderItemData( ul, item );
if ( item.category ) {
li.attr( "aria-label", item.category + " : " + item.label );
}
});
}
});


$(function() {
$( "#searchInput" ).catcomplete({
minLength: 2,
source:'search_suggestions.php'
});
});

Наконец, это фактическое поле ввода на странице:
Извините, если слишком много кода!

Подробнее здесь: https://stackoverflow.com/questions/318 ... categories
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»