我想使用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);
}
});
感谢。
答案 0 :(得分:0)
当source
是一个对象数组 - [ { label: "Choice1", value: "value1" }, ... ]
时,只搜索label
(如果未提供value
,则为label
)/显示在建议菜单http://api.jqueryui.com/autocomplete/#option-source中。因此,您可以在返回的数组中包含fax
,founder
和其他键/值集,并且不会搜索/显示它们。
另一种方法是你只在PHP脚本中获取名称,然后在select
上执行ajax请求以获取所有其他数据。
注意:您使用的是ui.item.name
-
$('#ProName' ).html(ui.item.name);
但name
不在您的数组中,因此应为label
$('#ProName' ).html(ui.item.label);