0

这是该线程的后续内容(通过单击下拉列表更改文本值) 解决此问题的地方它不适用于我的脚本,因此我将更深入地进行。

HTML

<li><input type="text" id="location"></li>
<div id="locationselect"></div>

用户开始在文本输入 id="location"中输入他们的位置,AJAX 用于返回以用户输入开头的位置列表。(例如,“Lon”将返回 London、Long Eaton 等并将结果返回到作为无序列表)

jQuery/AJAX 代码

获取位置.php

<?php

    if ($location == '') {echo "";}
    else {
        echo "<ul>";
        while($location = mysql_fetch_assoc($result)){
        echo "<li>". $location['location'] ."</li>";
        }
        echo "</ul>";
    }
?>

这一切都很好!当输入用户输入时,我得到了位置的下拉列表,因此 AJAX 部分正在工作。

我现在遇到的问题是......它会在您输入字母时显示位置列表但是

$('#locationselect li').click(function() {
    $('#location').val($(this).text());
});

单击列表项时,似乎不会自动完成id="location" 输入文本字段。getlocations.php 文件中是否缺少某些内容?

对此感到非常困惑,为新线程道歉,但最后一个在技术上得到了回答=)感谢您的帮助。

4

1 回答 1

1

如果我理解正确,那么您将单击事件绑定到 #locationselect 下的任何 li 之前可用。在 ajax 调用中加载和呈现 li 元素后,您应该绑定 click 事件。试试这个:

$('document').ready(function(){
$('#location').keyup(function() {
    if ($('#location').length == 0) {
        $('#locationselect').hide();
    }
    $('#locationselect').html("");
    var location = $('#location').val();
    location = $.trim(location);
    $.ajax({
        type:"post",
        url:"getlocations.php",
        data:"location="+location,
        success:function(data){
            $("#locationselect").html(data);
            $('#locationselect li').click(function() {
                $('#location').val($(this).text());
            });
        }
    });
});
});
于 2013-10-28T15:30:36.847 回答