为了简单起见,我有jquery自动完成工作,在同一输入字段中,从数组中连接/显示多行的最佳方法是什么。
我的php看起来像这样
$return_arr = array();
/* If connection to database, run sql statement. */
if ($conn)
{
$fetch = mysql_query("SELECT * FROM alltickets where name like '%" . mysql_real_escape_string($_GET['term']) . "%'");
/* Retrieve and store in array the results of the query.*/
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$row_array['id'] = $row['id'];
$row_array['value'] = $row['name'];
$row_array['thedate'] = $row['date'];
array_push($return_arr,$row_array);
}
}
/* Free connection resources. */
mysql_close($conn);
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
我的html页面看起来像
>Please enter what you are looking for</p>
<p class="ui-widget">
<label for="event">Please start entering your event </label>
<input type="text" id="event" name="event" /></p>
<input type="hidden" id="mysqlid" name="mysqlid" />
<p><input type="submit" name="submitBtn" value="Submit" /></p>
</fieldset>
</form>
<script type="text/javascript">
$(function() {
$("#event").autocomplete({
source: "autocomp.php",
minLength: 2,
select: function(event, ui) {
$('#mysqlid').val(ui.item.id);
}
});
});
</script>
什么是让“日期”显示在名为event的文本输入字段中的最有效方法,就在“name”之后
所以现在如果我搜索,“cam”结果将如此
camera
我希望结果看起来像
camera 17/09/2013
我可以看到有几种方法可以做到这一点,最好的方法是什么?谢谢
答案 0 :(得分:0)
最简单的方法可能是在select
事件处理程序中执行此操作。请记住也要阻止事件的默认操作:
$("#event").autocomplete({
source: "autocomp.php",
minLength: 2,
select: function(event, ui) {
event.preventDefault();
this.value = ui.item.value + " " + ui.item.thedate;
$('#mysqlid').val(ui.item.id);
}
});
示例: http://jsfiddle.net/J5rVP/33/
如果您想在建议列表中显示日期,您可以选择以下几个选项:
value
属性(在服务器上执行工作)value
属性_renderItem
功能,以您希望的方式显示项目。在你的情况下,似乎#3可能是最好的方式,所以这就是你将如何做到这一点:
$("#event").autocomplete({
source: "autocomp.php",
select: function (event, ui) {
event.preventDefault();
this.value = ui.item.value + " " + ui.item.thedate;
}
}).data("autocomplete")._renderItem = function (ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + " " + item.thedate + "</a>")
.appendTo(ul);
};