我试图切换从ajax结果集中获取的搜索结果.实际上问题是onkeyup和onkeydown它没有上下搜索结果,这是非常令人沮丧的.但是,我尝试的代码如下: –
码:-
<input type="search" class="searchnews" name="news" autocomplete="off" />
<div id="suggestion-list"></div>
<style>
.selected {background: #EAEAEA;}
</style>
<script>
$('.searchnews').keyup(function(e){
$('input[name="hidden_news"]').val('');
$('input[name="hidden_news"]').val($.trim($(this).val()));
if(e.keyCode!=40 && e.keyCode!=38){
var str = $(this).val();
$.ajax({
type:'POST',
url:'ajax/getnews.PHP',
data:'str='+str,
success: function(data){
if(data.length <= 2){
$("#suggestion-list").css('display','none');
}
else{
$("#suggestion-list").html('');
$("#suggestion-list").css('display','block');
$("#suggestion-list").append(data);
}
}
});
}
});
$(document).keydown(function(e){
if (e.keyCode == 38) {
var selected = $(".selected");
$("#suggestion-list ul li").removeClass("selected");
if (selected.prev().length == 0) {
selected.siblings().last().addClass("selected");
} else {
selected.prev().addClass("selected");
}
}
if (e.keyCode == 40) {
var selected = $(".selected");
$("#suggestion-list ul li").removeClass("selected");
selected.next().addClass("selected");
if (selected.next().length == 0) {
selected.siblings().first().addClass("selected");
} else {
selected.next().addClass("selected");
}
}
});
</script>
**getnews.PHP**
<?PHP
if(isset($_POST['str']) && $_POST['str']!=''){
$str=$_POST['str'];
$str1 = explode(' ',$str);
foreach($str1 as $st){
$sql[] =" title like '%".$st."%'";
}
$result=MysqL_query("SELECT * FROM news WHERE ".implode('and',$sql)." or title like '%".$str."%'");
//$result=MysqL_query("SELECT * FROM newsupdate WHERE title LIKE \"%$str%\" and status='1' ORDER BY published_date DESC");
$i=0;
if(MysqL_num_rows($result) > 0){
echo '<ul>';
while($row=MysqL_fetch_array($result)){
$i++;
if($i==1){
?>
<li class="selected"><a style="color:#030303;" target="_blank" >
<span class="text"><?PHP echo preg_replace("/$str/i",'<span class="highlight">'.$str.'</span>',$row['title']); ?></span>
</a></li>
<?PHP
}
else{
?>
<li><a style="color:#030303;" target="_blank">
<span class="text"><?PHP echo preg_replace("/$str/i",'<span class="highlight">'.$str.'</span>',$row['title']); ?>
</span>
</a></li>
<?PHP
}
}
echo '</ul>';
}
}
?>
请帮我解决这个问题.谢谢.
解决方法:
杰森,你能否从我的代码中删除我已注释掉的行,并告诉我你这样做会发生什么?
$(document).keydown(function(e){
if (e.keyCode == 38) {
var selected = $(".selected");
$("#suggestion-list ul li").removeClass("selected");
if (selected.prev().length == 0) {
selected.siblings().last().addClass("selected");
} else {
selected.prev().addClass("selected");
}
}
if (e.keyCode == 40) {
var selected = $(".selected");
$("#suggestion-list ul li").removeClass("selected");
//selected.next().addClass("selected");
if (selected.next().length == 0) {
selected.siblings().first().addClass("selected");
} else {
selected.next().addClass("selected");
}
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。