2012-05-17 11:30 自动补全代码 jquery+ajax+php+mysql
来源:互联网 发布:java建站 编辑:程序博客网 时间:2024/05/16 19:51
/*
* @author echo.d
* @email 840206883@qq.com
*/
数据库
数据库名:search
表名:auto
|-id
|-content
目录如下:
|-index.php
|-search.php
|-style.css
|-script
|-jqury.js 自己去下 本人不提供 资源网站:http://jquery.com/
|-auto.js
index.php代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery+ajax自动补全</title>
<script type="text/javascript" src="./scripts/jquery.js"></script>
<script type="text/javascript" src="./scripts/auto.js"></script>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<input type="text" id="search_word" class="search_word" size="40" maxlength="40"/>
<input type="button" name="sub" value="提交"/>
<div id="search_div">
<ul id="search_ul"></ul>
</div>
</body>
</html>
search.php代码如下:
<?php
$conn = @mysql_connect("localhost","root","") or die ("连接数据库错误".mysql_error());
mysql_select_db("search",$conn)or die ("没有这个数据库".mysql_error());
mysql_query("set names 'utf8'");
$search_word = $_GET[search_word];
$str = "select * from auto where `content` LIKE '".$search_word."%'";
$result = mysql_query($str);
while($row = mysql_fetch_array($result)){
$content[] = $row['content'];
}
echo json_encode($content);
?>
style.css代码如下:
body{ font-family:Arial;font-size:14px; padding:0px; margin:10px;}
.search_word{ width:200px; }/* 用户输入框的样式 */
.show{border:1px solid #004a7e;}/* 显示提示框的边框 */
ul{list-style:none; margin:0px; padding:0px; color:#004a7e;}
.mouseOver{ background-color:#004a7e;color:#FFFFFF;}
auto.js代码如下:
2012年05月19 修复bug '回车输入汉字字符不ajax'
$(function(){
//初始化变量
var li_index = -1; //li索引值
var search_word = $("#search_word");
var search_div = $("#search_div");
var search_ul = $("#search_ul");
var enter_var = 1; //回车变量(用于区分是汉字输入字母按下enter【enter_var = 1】;还是按上下键然后按下enter【enter_var = 2】选择<li>元素)
//布局div 关键词显示域
search_div
.css("border","1px solid black")
.css("position","absolute")
.css("top",search_word.offset().top+search_word.height()+6+"px")
.css("left",search_word.offset().left+"px")
.css("width",search_word.width()+4+"px")
.hide();
//清除提示内容
var clearContent = function(){
if(search_ul != null){
search_ul.find("li").remove();//删除ul元素下所有子节点
}
if(search_div != null){
search_div.hide();
}
}
//显示内容
var setContent = function(theContent){
clearContent();
search_div.show();
for(str in theContent){
$("<li>"+theContent[str]+"</li>").appendTo(search_ul);
//li元素被单击选中 和 鼠标滑过有特效
search_ul.find("li").click(function(){
search_word.val($(this).text());
clearContent();
}).hover(
function () { $(this).addClass("mouseOver");},
function () { $(this).removeClass("mouseOver");}
);
}
}
//ajax同步到数据
search_word.keyup(function(event){
var event = event || window.event;
var key_code = event.keyCode;
if((key_code >= 65 && key_code <= 90) || key_code == 8 || key_code == 46 || key_code == 32 || (key_code == 13 && enter_var == 1)){
if(search_word.val().length > 0){
search_str = search_word.val();//拿到用户输入的词
$.ajax({
type : "get",
url : "search.php",
dataType : "json",
data : {search_word : search_str},
success : function(data){
if(data !== null){
setContent(data);
}else if(data == null){
clearContent();
}
}
});
}else{
clearContent();
}
}else if(key_code == 38 || key_code == 40){
if(key_code == 38){//按向上键
var autoLiNode = search_ul.find("li");
if(li_index != -1){
autoLiNode.eq(li_index).removeClass("mouseOver");
li_index--;
}else{
li_index = autoLiNode.length-1;
}
if(li_index == -1){//如果到顶 高亮移动到最后一个
li_index = autoLiNode.length-1;
}
autoLiNode.eq(li_index).addClass("mouseOver");
var context = autoLiNode.eq(li_index).text();
search_word.val(context);
enter_var = 2;
}else if(key_code == 40){//按向下键
var autoLiNode = search_ul.find("li");
if(li_index != -1){
autoLiNode.eq(li_index).removeClass("mouseOver");
}
li_index++;
if(li_index == autoLiNode.length){
li_index = 0;
}
autoLiNode.eq(li_index).addClass("mouseOver");
var context = autoLiNode.eq(li_index).text();
search_word.val(context);
enter_var = 2;
}
}else if(key_code == 13 && enter_var == 2){//输入回车
if(li_index != -1){
var context = search_ul.find("li").eq(li_index).text();
clearContent();
li_index = -1;
search_word.val(context);
}
enter_var = 1;
}
});
});
- 2012-05-17 11:30 自动补全代码 jquery+ajax+php+mysql
- 自动补全 php+ajax
- php+mysql+jquery 简易的检索自动补全提示
- jquery autocomplete ajax 自动补全用法
- ajax 自动补全
- ajax自动补全
- jquery自动补全
- jQuery 自动补全
- Jquery自动补全
- jquery 自动补全
- jquery 自动补全
- jquery 自动补全
- Jquery 自动补全
- jquery 自动补全
- jquery自动补全
- 代码自动补全
- mysql自动补全
- MySQL自动补全
- 搜索引擎-倒排索引基础知识
- 梦断代码--一个程序员的自白 (三)
- 演示一个矢量(Vector)的基本操作
- OpenGL ES 绘制多边形
- 不使用man 3 printf的函数,实现一个简单的printf函数
- 2012-05-17 11:30 自动补全代码 jquery+ajax+php+mysql
- Linux手工配置IP、网关及解决非正常关机导致ifup脚本丢失不能联网
- 有助于ios5开发的好东西
- 学习Spring3.X 企业应用开发实战笔记(一)
- TinyXML:一个优秀的C++ XML解析器
- Flex air 静态设置背景图与动态设置背景图
- linux下的文件编码,vim编码
- i2c
- Jamendo学习笔记之:播放流程