2010-12-17 66 views
2

我将jQuery UI自动完成附加到工作的联系人字段,但现在我还需要传递一个company_id(动态地)来限制搜索不仅限于搜索字符还包括用户以前选择的公司。 IE如果用户输入'jo',则所有包含'jo'的联系人都在company_id内传递。jQuery UI autoComplete - 从另一个字段传递一个值

顺便说一下,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); 
     } 
    }); 

谢谢!

回答

2

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

那么这样做:
用户选择了一个公司代码(未显示)之前,
下autocomple连接的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; 

相关问题