jQuery UI autoComplete - 从另一个字段传递一个值

时间:2010-12-17 22:55:22

标签: jquery jquery-ui-autocomplete

我将jQuery UI自动完成功能附加到可以使用的联系人字段,但现在我还需要传递一个company_id(动态地)来限制搜索不仅搜索字符,还限制用户之前选择的公司。 IE,如果用户输入'jo',则包含在company_id内的'jo'的所有联系人都已通过。

顺便说一句,remote.php传回了id和value,所以我可以填充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 个答案:

答案 0 :(得分:2)

经过大量的研究和追踪和错误,这对我有用。

这是做什么的:
用户在此代码之前选择了公司(未示出),
下面的自动填充附加了contact_name,并且也传递了company_id remote.php返回符合部分搜索条件且属于给定公司的联系人的id和值的数组。当用户点击某个值时,联系人姓名将被放置在自动填充的字段中(没有特殊代码,自动完成会自动执行此操作)并且id放在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;