Javascript Ajax自动完成不';t返回正确的值
我有一个ajax自动完成,它返回用户的全名。但是,当存在某些名称或值相同的实例时,它不会返回正确的值。相反,它返回下拉列表中的第一个值。即使它有4次相同的出现,它仍然返回第一个值 当我单击Stannis Arryn Baratheon时,它返回Stannis Targryen Baratheon 以下是我的php代码(sql/php代码;ad.php):Javascript Ajax自动完成不';t返回正确的值,javascript,php,jquery,ajax,autocomplete,Javascript,Php,Jquery,Ajax,Autocomplete,我有一个ajax自动完成,它返回用户的全名。但是,当存在某些名称或值相同的实例时,它不会返回正确的值。相反,它返回下拉列表中的第一个值。即使它有4次相同的出现,它仍然返回第一个值 当我单击Stannis Arryn Baratheon时,它返回Stannis Targryen Baratheon 以下是我的php代码(sql/php代码;ad.php): 您的代码当前正在使用#result中的classreturnName收集所有元素,通过在该集合上调用.html(),jQuery将只返回找到
您的代码当前正在使用#result
中的classreturnName
收集所有元素,通过在该集合上调用.html()
,jQuery将只返回找到的第一个元素的html。您的returnID
搜索也是如此。这就是为什么您只获得第一个返回的条目
修改#result click处理程序,使其仅触发类为show
的元素,因为该元素将包含数据
jQuery("#result").on("click", ".show", function(e){
然后,您只需使用classreturnName
和returnID
搜索元素,然后调用.text()
总而言之
jQuery("#result").on("click", ".show", function(e){
var showName = $('.returnName',this).text();
var showId = $('.returnID',this).text();
$('#search_keyword_id').val(showName);
$('#resID').val(showId);
});
不过请注意,可能有更好的方法返回数据,并利用它,而不是在html元素中传输数据。例如,使用而不是使用单独的span
元素来包含您的id
另一个选项是使用它来完成大部分客户端工作,只需从php脚本返回JSON格式的原始数据。在php代码中,更改以下内容:
<div class="show" align="left">
<span class="returnName"><?php echo $row["firstName"].' '.$row["middleName"].' '.$row["lastName"]; ?></span>
<span class="returnID" style="display:none"><?php echo $row['idPerson'];?></span>
</div>
您正在尝试重新发明轮子…问题似乎出在
(“#结果”)。在(“单击”
方法…检查:)我已经研究过了。但我似乎真的无法修复它…只是为了测试;您可以用以下代码替换您的方法:jQuery(#result”).on(“click”、“.returnName”函数(e){$name=$(this.html();$('#resID').val($name);})代码>尝试了您的代码,它返回实际的div代码…:(所以它返回的是点击span的html,对吗?。记住这是为了测试是否返回点击span的html…哇!!!!是的,.SHOW包含数据。我认为不可能在…jQuery(#result)中包含“.SHOW”)。on(“点击”、“.SHOW”,函数(e)。非常感谢。它解决了我的问题。谢谢!!!它奏效了!!!!!这是一种不同于其他答案(也奏效)的方法,但它奏效了。哇!!!非常感谢!!!谢谢你!哈克曼!!!!
jQuery("#result").on("click", ".show", function(e){
var showName = $('.returnName',this).text();
var showId = $('.returnID',this).text();
$('#search_keyword_id').val(showName);
$('#resID').val(showId);
jQuery("#result").on("click", ".show", function(e){
var showName = $('.returnName',this).text();
var showId = $('.returnID',this).text();
$('#search_keyword_id').val(showName);
$('#resID').val(showId);
});
<div class="show" align="left">
<span class="returnName"><?php echo $row["firstName"].' '.$row["middleName"].' '.$row["lastName"]; ?></span>
<span class="returnID" style="display:none"><?php echo $row['idPerson'];?></span>
</div>
<div class="show" align="left">
<span class="returnName" data-id="<?php echo $row['idPerson'];?>"><?php echo $row["firstName"].' '.$row["middleName"].' '.$row["lastName"]; ?></span>
</div>
jQuery("#result").on("click","'.returnName" function(e)
{
var choosenName = $(this).html();
var choosenId = $(this).data('id');
$('#search_keyword_id').val(choosenName );
$('#resID').val(choosenId );
});