php+jquery 实现输入自动完成提示的功能
2014-10-09 16:25
661 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>搜索词自动完成</title>
<style type="text/css">
#k{ float:left}
.s_div{ width:155px;float:left; position:relative;top:21px; left:-155px; }
.s_div ul{ width:100%;float:left; position:absolute;top:-16px; left:-40px;}
.s_div ul li{width:100%; height:20px; line-height:20px; text-align:left;list-style-type:none}
.li-color {
background-color: #9ACCFB;
}
</style>
<script src="jquery-1.7.2.min.js"></script>
<script>
$(function(){
var $keys=$('#k');
var divhide=function(){
$('#searchdiv ul').empty().hide();
}
$keys.blur(function(){
setTimeout(divhide,200);
});
//下拉列表中高亮的项目的索引,当显示下拉列表项的时候,移动鼠标或者键盘的上下键就会移动高亮的项目,想百度搜索那样
var selectedItem = null;
//设置下拉项的高亮背景
var setSelectedItem=function(item){
//更新索引变量
selectedItem=item;
//按上下键是循环显示的,小于0就置成最大的值,大于最大值就置成0
if(selectedItem<0){
selectedItem=$('#searchdiv ul').find('li').length-1;
}else if(selectedItem>$('#searchdiv ul').find('li').length-1){
selectedItem=0;
}
//首先移除其他列表项的高亮背景,然后再高亮当前索引的背景
$('#searchdiv ul').find('li').removeClass('li-color').eq(selectedItem).addClass('li-color');
};
var $sear=$('#searchdiv ul');
var ajax_request = function(){
$('#searchdiv ul').show();
$.ajax({
type: "POST",
dataType:'json',
url: "/test.php",
data: "key="+$.trim($keys.val()),
success: function(data){
$('#searchdiv ul').empty();
if(data){
$.each(data,function(index,term){
//创建li标签,添加到下拉列表中
$("<li></li>").text(term).appendTo($sear).hover(function(){
//下拉列表每一项的事件,鼠标移进去的操作
$(this).siblings().removeClass('li-color');
$(this).addClass('li-color');
selectedItem=index;
},function(){
//下拉列表每一项的事件,鼠标离开的操作
$(this).removeClass('li-color');
//当鼠标离开时索引置-1,当作标记
selectedItem=-1;
}).click(function(){
//鼠标单击下拉列表的这一项的话,就将这一项的值添加到输入框中
$keys.val(term);
//清空并隐藏下拉列表
$('#searchdiv ul').empty().hide();
});
});
setSelectedItem(0);
}
}
});
}
$keys.keyup(function(event){
//字母数字,退格,空格
if(event.keyCode > 40 || event.keyCode == 8 || event.keyCode ==32) {
//首先删除下拉列表中的信息
$('#searchdiv ul').empty().hide();
setTimeout(ajax_request,100);
}
else if(event.keyCode == 38){
//上
//selectedItem = -1 代表鼠标离开
if(selectedItem == -1){
setSelectedItem($('#searchdiv ul').find('li').length-1);
}
else {
//索引减1
setSelectedItem(selectedItem - 1);
}
event.preventDefault();
}
else if(event.keyCode == 40) {
//下
//selectedItem = -1 代表鼠标离开
if(selectedItem == -1){
setSelectedItem(0);
}
else {
//索引加1
setSelectedItem(selectedItem + 1);
}
event.preventDefault();
}
}).keypress(function(event){
//enter键
if(event.keyCode == 13) {
//列表为空或者鼠标离开导致当前没有索引值
if($('#searchdiv ul').find('li').length == 0 || selectedItem == -1) {
return;
}
$keys.val($('#searchdiv ul').find('li').eq(selectedItem).text());
$('#searchdiv ul').empty().hide();
event.preventDefault();
}
}).keydown(function(event){
//esc键
if(event.keyCode == 27 ) {
$('#searchdiv ul').empty().hide();
event.preventDefault();
}
}).focus(function(){
$('#searchdiv ul').empty().hide();
setTimeout(ajax_request,100);
});
});
</script>
</head>
<body>
<input name="k" type="text" id="k" AUTOCOMPLETE="off">
<div class="s_div" id="searchdiv">
<ul></ul>
</div>
</body>
</html>
//php测试代码
<?php
$key=$_POST['key'];
if($key){
if($key==1){
echo json_encode(array("11","12","13","14","15","16"));
exit();
}
if($key==2){
echo json_encode(array("aa","bb","cc","dd","ee","ff"));
exit();
}
}
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>搜索词自动完成</title>
<style type="text/css">
#k{ float:left}
.s_div{ width:155px;float:left; position:relative;top:21px; left:-155px; }
.s_div ul{ width:100%;float:left; position:absolute;top:-16px; left:-40px;}
.s_div ul li{width:100%; height:20px; line-height:20px; text-align:left;list-style-type:none}
.li-color {
background-color: #9ACCFB;
}
</style>
<script src="jquery-1.7.2.min.js"></script>
<script>
$(function(){
var $keys=$('#k');
var divhide=function(){
$('#searchdiv ul').empty().hide();
}
$keys.blur(function(){
setTimeout(divhide,200);
});
//下拉列表中高亮的项目的索引,当显示下拉列表项的时候,移动鼠标或者键盘的上下键就会移动高亮的项目,想百度搜索那样
var selectedItem = null;
//设置下拉项的高亮背景
var setSelectedItem=function(item){
//更新索引变量
selectedItem=item;
//按上下键是循环显示的,小于0就置成最大的值,大于最大值就置成0
if(selectedItem<0){
selectedItem=$('#searchdiv ul').find('li').length-1;
}else if(selectedItem>$('#searchdiv ul').find('li').length-1){
selectedItem=0;
}
//首先移除其他列表项的高亮背景,然后再高亮当前索引的背景
$('#searchdiv ul').find('li').removeClass('li-color').eq(selectedItem).addClass('li-color');
};
var $sear=$('#searchdiv ul');
var ajax_request = function(){
$('#searchdiv ul').show();
$.ajax({
type: "POST",
dataType:'json',
url: "/test.php",
data: "key="+$.trim($keys.val()),
success: function(data){
$('#searchdiv ul').empty();
if(data){
$.each(data,function(index,term){
//创建li标签,添加到下拉列表中
$("<li></li>").text(term).appendTo($sear).hover(function(){
//下拉列表每一项的事件,鼠标移进去的操作
$(this).siblings().removeClass('li-color');
$(this).addClass('li-color');
selectedItem=index;
},function(){
//下拉列表每一项的事件,鼠标离开的操作
$(this).removeClass('li-color');
//当鼠标离开时索引置-1,当作标记
selectedItem=-1;
}).click(function(){
//鼠标单击下拉列表的这一项的话,就将这一项的值添加到输入框中
$keys.val(term);
//清空并隐藏下拉列表
$('#searchdiv ul').empty().hide();
});
});
setSelectedItem(0);
}
}
});
}
$keys.keyup(function(event){
//字母数字,退格,空格
if(event.keyCode > 40 || event.keyCode == 8 || event.keyCode ==32) {
//首先删除下拉列表中的信息
$('#searchdiv ul').empty().hide();
setTimeout(ajax_request,100);
}
else if(event.keyCode == 38){
//上
//selectedItem = -1 代表鼠标离开
if(selectedItem == -1){
setSelectedItem($('#searchdiv ul').find('li').length-1);
}
else {
//索引减1
setSelectedItem(selectedItem - 1);
}
event.preventDefault();
}
else if(event.keyCode == 40) {
//下
//selectedItem = -1 代表鼠标离开
if(selectedItem == -1){
setSelectedItem(0);
}
else {
//索引加1
setSelectedItem(selectedItem + 1);
}
event.preventDefault();
}
}).keypress(function(event){
//enter键
if(event.keyCode == 13) {
//列表为空或者鼠标离开导致当前没有索引值
if($('#searchdiv ul').find('li').length == 0 || selectedItem == -1) {
return;
}
$keys.val($('#searchdiv ul').find('li').eq(selectedItem).text());
$('#searchdiv ul').empty().hide();
event.preventDefault();
}
}).keydown(function(event){
//esc键
if(event.keyCode == 27 ) {
$('#searchdiv ul').empty().hide();
event.preventDefault();
}
}).focus(function(){
$('#searchdiv ul').empty().hide();
setTimeout(ajax_request,100);
});
});
</script>
</head>
<body>
<input name="k" type="text" id="k" AUTOCOMPLETE="off">
<div class="s_div" id="searchdiv">
<ul></ul>
</div>
</body>
</html>
//php测试代码
<?php
$key=$_POST['key'];
if($key){
if($key==1){
echo json_encode(array("11","12","13","14","15","16"));
exit();
}
if($key==2){
echo json_encode(array("aa","bb","cc","dd","ee","ff"));
exit();
}
}
相关文章推荐
- PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
- jQuery+PHP+Mysql实现输入自动完成提示的功能
- jQuery+PHP+Mysql实现输入自动完成提示的功能
- jQuery+PHP+Mysql实现输入自动完成提示的功能
- PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
- jQuery+PHP+Mysql实现输入自动完成提示的功能
- 基于 jQuery+PHP+Mysql实现输入自动完成提示
- 【输入智能提示功能】PHP+jQuery实现自动补全功能
- Vim配置#Vim中实现php代码自动完成,提示功能
- 【输入智能提示功能】PHP+jQuery实现自动补全功能
- 用trie树实现输入提示功能,输入php函数名,提示php函数
- 输入自动提示与补全功能的设计与实现
- 搜索功能 自动完成输入提示
- 文本框输入提示/自动完成功能
- 用js实现输入提示(自动完成)
- 使用FlexBox和Json实现类似ComboBox(类似Google的输入提示和自动)功能-基于JQuery-ASP.NET
- jquery+php查询mysql实现自动完成功能
- 使用python代码实现三叉搜索树高效率”自动输入提示”功能
- 用jQuery的ajax的功能实现输入自动提示的功能
- JavaScript-----用js实现输入提示(自动完成)[转载]