Как по крайней мере отобразить элемент в панели автозаполнения JqueryUI, когда результат не найден - PullRequest
0 голосов
/ 02 августа 2010

Я пытаюсь заставить панель / список автозаполнения jqueryUI, по крайней мере, отображать элемент по умолчанию (например, «Добавить новый элемент»), когда совпадение не найдено. Элемент должен иметь возможность связываться с некоторым обработчиком событий.

До сих пор я пытался преодолеть эту проблему, добавляя псевдо-панель переменного тока, когда реальная панель переменного тока оказывается скрытой.

Мне также интересно, возможно ли динамически обновить «источник» (в параметре jqueryui.autocomplete), вставляя элемент в набор данных, чтобы любой тип в текстовом поле был обнаружен как совпадение и, следовательно, отображаться. (Извините, действительно сложно объяснить эту часть).

Есть ли лучший способ добиться этого?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2010

я пришел с обходным путем, используя удаленный источник данных . (http://jqueryui.com/demos/autocomplete/#remote)

просто пропустите элемент через ajax (элемент по умолчанию, с сервера), когда ничего не найдено.

Решено!

0 голосов
/ 02 августа 2010

Вы можете переопределить функцию _renderItem, сделать свой собственный дисплей и добавить текст «Добавить новый элемент».

примерно так: (предупреждение не проверено)

$('#yourinputelementid').data( "autocomplete" )._renderMenu: function( ul, items ) {
        var self = this;
        $.each( items, function( index, item ) {
            self._renderItem( ul, item );
        });
        var newitem = $( "<li>Add New Item</li>");
        newitem.click(function(event) {
            alert("newitem test");
        });
        self.append(newitem);
    }
.data( "autocomplete" )._renderItem = function( ul, item ) {
    return $( "<li></li>" )
        .data( "item.autocomplete", item )
        .append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
        .appendTo( ul );
};

см. Здесь

...