2013-10-28 49 views
0

这是从this thread(change text value by clicking drop down list) 后面的问题解决此问题的方法不适用于我的脚本,因此我将深入讨论。Jquery自动填充文本字段问题

HTML

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

用户开始输入他们的位置为文本输入ID =“位置”,AJAX是用来返回与用户输入的启动位置的列表。 (例如 “经度” 将返回伦敦,龙伊顿等,并返回结果作为一个无序列表)

JQuery/AJAX Code

getlocations.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 =“位置”输入文本字段当单击列表项时。 getlocations.php文件中是否有缺失?

真的很困惑这一点,道歉为一个新的线程,但最后是技术上的答案=)感谢您的任何帮助。

回答

1

如果我的理解正确的话,那么在任何可用之前将click事件绑定到#locationselect下的任何li。 在li元素在ajax调用中加载并渲染后,您应该绑定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()); 
      }); 
     } 
    }); 
}); 
}); 
+0

绝对的传奇!是的,这完全按照预期工作!我认为这样做会在事件发生后将其绑定。非常感谢你=)我只需要删除用户点击后的列表项。如果不行的话,我会在前面告诉你,我会来找你的 – Ultigma