Как манипулировать плагином автозаполнения jquery, чтобы получить как идентификатор, так и значение

Я использую этот плагин автозаполнения jquery. Формат данных для автозаполнения выглядит следующим образом

"name"=>"1" format. 

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

input type='text' name='product' productid=''

Теперь, когда пользователь выбирает любой продукт, атрибут productid должен получить это значение. Как это сделать


person Krishna Deepak    schedule 19.01.2012    source источник
comment
Вы видели пример Пользовательские данные и отображение в документации по jQueryUI?   -  person Thorsten    schedule 19.01.2012


Ответы (1)


Я думаю, что вам нужен вариант select.

Допустим, ваш источник данных — это следующий массив объектов:

var data = [
    {
        label: 'Product 1',
        productid: '1'
    },
    {
        label: 'Product 2',
        productid: '2'
    },{
        label: 'Product 3',
        productid: '1'
    }];

По умолчанию подключаемый модуль будет искать свойства label и value в вашем объекте (если «value» отсутствует, он будет использовать «label»).

Примечание: если вы укажете значение, оно будет использоваться для установки значения ввода при выборе предлагаемого элемента в меню!

Так в нашем примере свойство productid на самом деле не будет использоваться напрямую плагином, он об этом не знает, но мы будем иметь к нему доступ в параметре обработчиков событий ui.item.

Я бы добавил скрытое поле для хранения фактического выбранного значения (а не атрибут «productid», как вы предлагаете в своем вопросе).

<input type="hidden" id="productid" value="" />

JS-код:

$("#myinput").autocomplete({
    source: data,
    // the 'select' event is triggered when an item is selected in the menu
    select: function(e, ui) {
        $("#productid").val(ui.item.productid);
        // if you want to add the "productid" attiubte
        $(this).attr('productid', ui.item.productid);
    }
});

Работает DEMO

person Didier Ghys    schedule 19.01.2012
comment
На самом деле я использую другой плагин, ссылка на который такая: bassistance.de/jquery -plugins/jquery-plugin-autocomplete Но я работал над теми же строками и заставил его работать. В любом случае спасибо. - person Krishna Deepak; 20.01.2012
comment
Собственно, плагин от bassistance теперь является виджетом jQuery UI Autocomplete :-) - person Didier Ghys; 20.01.2012