我将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 ); } });
谢谢!
答案 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;