jquery-ui auto-complete只允许从多个json结果中按名称搜索

时间:2013-10-31 14:01:54

标签: javascript php jquery json jquery-ui

我想使用jqueryUi的自动完成将搜索限制为名称,以便返回的结果只是名称,不包括其他数组值,如传真和东西。

这是我的PHP。

<?php
require_once 'db_conx.php';
$req = "SELECT * "
    ."FROM profiles "
    ."WHERE name LIKE '%".mysql_real_escape_string($_REQUEST['term']) ."%' "; 
$query = mysql_query($req);
while($row = mysql_fetch_array($query))
{
    $return = array ('label' => $row['name'],
    'founder' => $row['founder'],
    'fax' => $row['fax']

    );

}
echo json_encode($return);
?>

的Javascript

$(function() {
        $( "#SearchInput").autocomplete({
            source: '../Search/BP_Search.php',
            minLength: 2,
            autoFocus: false,
            select: function(event, ui) {
             $('#ProName' ).html(ui.item.name); 
             $('#ProFax' ).html(ui.item.fax);  
             $('#ProFounder' ).html(ui.item.founder); 
            }
    });

感谢。

1 个答案:

答案 0 :(得分:0)

source是一个对象数组 - [ { label: "Choice1", value: "value1" }, ... ]时,只搜索label(如果未提供value,则为label)/显示在建议菜单http://api.jqueryui.com/autocomplete/#option-source中。因此,您可以在返回的数组中包含faxfounder和其他键/值集,并且不会搜索/显示它们。

另一种方法是你只在PHP脚本中获取名称,然后在select上执行ajax请求以获取所有其他数据。


注意:您使用的是ui.item.name -

$('#ProName' ).html(ui.item.name);

name不在您的数组中,因此应为label

$('#ProName' ).html(ui.item.label);