Автозаполнение пользовательского интерфейса jQuery: как использовать пользовательский индекс? - PullRequest
0 голосов
/ 22 мая 2019

У меня проблема с пользовательским интерфейсом jQuery. Мне нужно autocomplete() форма с данными из базы данных. Мне нужно name для отображения и ID для отправки.

Итак, я не могу просто использовать массив строк с именем, мне нужно использовать массив объектов. Моя проблема заключается в следующем: автозаполнение пользовательского интерфейса jQuery принимает только свойства label или value для выполнения автозаполнения. Итак, я должен сделать это:

PHP:

public function autocomp(Connection $db)
    {

        $term = $_GET['term'];

        $req = $db->prepare("SELECT name, id FROM product LIKE '%".$term."%'");
        $req->execute();

        // Because jQuery-UI's autocomplete() accept only array with 'label' for index of value,
        // We are forced to parse the data before send it to JSON...
        $array = [];
        $i = 0;
        while($data = $req->fetch())
        {
            $i++;
            $array[$i]['id'] = $data['id'];
            $array[$i]['label'] = $data['name'];

        }

        $response = new Response(json_encode($array));
        return $response;

    }

jQuery autocomplete():

$(function () {
    $('#autotry').autocomplete({
        source: '/autocomp',
        select: function (event, ui) {
            $('#hidden').val( ui.item.id)
        }
    });
});

Вы знаете, что я имею в виду? Да, если определено 'label' или 'value', я могу использовать другие свойства (например, 'id') для того, что я хочу.

Я просто хочу использовать пользовательские свойства, чтобы избежать этого цикла ... Для каждого ввода. Спасибо и прошу прощения за мой английский (и мой навык JS.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...