Jquery自动完成2个字段

我有以下页面:

    .ui-menu-item { font-size:50%; }     $(function () { $("#a").autocomplete({ source: "query.php", minLength: 2 }); });    
A
B

query.php返回JSON data

 include("connect.inc.php"); $query = mysql_query("SELECT a, b FROM table WHERE a LIKE '%".mysql_real_escape_string($_GET['term'])."%' ORDER BY a ASC LIMIT 0,10") or die(mysql_error()); $data = array(); while($row = mysql_fetch_assoc($query)) { $data[] = $row['a']; } include("close.inc.php"); echo json_encode($data); 

数据库包含2行,显然是a和b。

问题是:如何更改当前脚本以自动完成a和b,其中a对应于mysql数据库中的b

我试图解决它,但我无法绕过它(约一个星期左右)。

先感谢您。

我认为你希望你的JSON格式为[{"a":"asd1","b":"b1"},{"a":"asd2","b":"b1"}...]然后你可以使用像这样的解析函数来处理它:

 function myAutocompleteJSONParse(data) { var rows = new Array(); var rowData = null; for (var i = 0, dataLength = data.length; i < dataLength; i++) { rowData = data[i]; rows[i] = { value: rowData.A, label: rowData.A, A: rowData.A, B: rowData.B }; } return rows; }; 

然后你可以从ajax调用它:

 ... success: function(data) { if (!data || data.length == 0) { var rows = new Array(); rows[0] = { A: 'Not Found', B: '' }; response(rows); } else { var rows = myAutocompleteJSONParse(data); response(rows); } } ... 

然后在自动完成句柄中选择它:

 ... select: function(event, ui) { var hasValue = (ui.item.value != undefined && ui.item.value != "" && ui.item.value != null); if (hasValue) { var focusedElement = $(this); focusedElement.val(ui.item.label); $("#b").val(ui.item.B); return false; } else { return false; } }, ... 

这里的假设:使用jQuery UI Autocomplete,使用当前的jQuery 1.6.4版本