jQuery UI autoComplete - передать ему значение из другого поля - PullRequest
2 голосов
/ 18 декабря 2010

Я присоединяю автозаполнение пользовательского интерфейса jQuery к полю контакта, которое работает, но теперь мне нужно также передать company_id (динамически), чтобы ограничить поиск не только поисковыми символами, но и компанией, которую пользователь ранее выбрал,То есть, если пользователь вводит «jo», все контакты, содержащие «jo», переданные внутри company_id, переданы.

Между прочим, remote.php передает обратно id и значение, чтобы я мог заполнить и contact_name, и contact_id.Эта часть работает.

Я просто не могу понять, как передать это поле company_id.


    $( "#contact_name ).autocomplete({
        source: 'remote.php?t=contactSearch',
        minLength: minlen,
        select: function( event, ui ) {
             $( "#contact_id" ).val(ui.item.id );
        }
    });

спасибо!

1 Ответ

2 голосов
/ 18 декабря 2010

После долгих исследований, ошибок и следов это работает для меня.

Так, что это делает:
Пользователь выбрал компанию перед этим кодом (не показан),
Автозаполнение ниже прикреплено к contact_name, и company_id также передается.
remote.php возвращает массив идентификаторов и значений контактов, которые соответствуют критериям частичного поиска и принадлежат данной компании. Когда пользователь щелкает значение, имя контакта помещается в поле автозаполнения (для этого нет специального кода, автозаполнение делает это автоматически), а идентификатор помещается в поле contact_id.

        $( "#contact_name" ).autocomplete({
            source: function(request, response) {
                $.getJSON ('remote.php',
                { term: request.term, company_id:$('#company_id').val() }, 
                response );
            },
            select: function( event, ui ) {
                $( "#contact_id" ).val(ui.item.id );
            }
        });


A look at a simplified version of remote.php is:


$myDataRows = array ();
$search = addslashes($_REQUEST['term']);
$company_id = addslashes($_REQUEST['company_id']);

$sql = "SELECT c.contact_id as `id`, contact_name as`value` FROM contacts c
    WHERE c.company_id = '$company_id'  and c.contact_name LIKE '%$search%' ";

$result = mysql_query ($sql);

while ($row = mysql_fetch_assoc($result)) {
   array_push($myDataRows, $row);
}

$ret = json_encode ($myDataRows);

echo $ret;

...