2

为了简单起见,我有 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>

什么是让“日期”显示在名为事件的文本输入字段中的最有效方法,就在“名称”之后

所以现在如果我搜索,“cam”结果将如下所示

camera

我希望结果看起来像

camera 17/09/2013

我可以看到有几种方法可以做到这一点,最好的方法是什么?谢谢

4

1 回答 1

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/


如果您想在建议列表中显示日期,您有几个选项:

  1. value使用要显示的整个字符串填充属性(在服务器上执行工作)
  2. 处理从服务器获得的响应以value正确填充属性
  3. 覆盖该_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);
};

示例:http: //jsfiddle.net/J5rVP/34/

于 2013-01-13T14:05:23.880 回答