jquery自动完成插件(autocomplete)应用之PHP版


Posted in Javascript onDecember 15, 2009

于工作中需要用到自动提示这个功能,呵呵,自己又是js小菜,于是百度了一下,找到一个用jquery与其插件autocomplete开发的.net版的自动完成功能,于是down下来了改成了php版的,并加了支持向上/向下选择文字等功能,放上来共享一下,纯体力活。。。 :)
1、下载jquery库,网址:http://jquery.com/ ;
2、下载jquery autocomplete插件或者直接使用我附件里提供的文件,自己下载下来的文件需要修改一些内容才能支持向上/向下选择文字、解决中文乱码,其中解决中文乱的问题网上有提到过,就是把文件中的encodeURI改成escape,还有把keydown修改成keyup即可,至于支持向上/向下选择文字请参看附件;
3、以下是调用代码:
auto.html内容:

<!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=gb2312" /> 
<script type="text/javascript" src="include/javascript/jquery.js"></script> 
<script type="text/javascript" src="include/javascript/jquery.autocomplete.js"></script> 
<link rel="stylesheet" type="text/css" href="include/javascript/jquery.autocomplete.css" /> 
<title>自动完成测试</title> 
</head> 
<body> 
<input type="text" name="keyword" id="search" size="30" /> 
<script language="javascript"> 
$(document).ready(function() { 
$("#search").autocomplete( 
"getindex.php", 
{ 
delay:10, 
minChars:1, 
matchSubset:1, 
matchContains:1, 
cacheLength:10, 
onItemSelect:selectItem, 
onFindValue:findValue, 
formatItem:formatItem, 
autoFill:false 
} 
); 
}); 
function findValue(li) { 
if( li == null ) return alert("No match!"); 
if( !!li.extra ) var sValue = li.extra[0]; 
else var sValue = li.selectValue; 
} 
function selectItem(li) { findValue(li);} 
function formatItem(row) { return row[0];//return row[0] + " (id: " + row[1] + ")"//如果有其他参数调用row[1],对应输出格式Sparta|896 
} 
function lookupAjax(){ 
var oSuggest = $("#search")[0].autocompleter; 
oSuggest.findValue(); 
return false; 
} 
</script> 
</body> 
</html>

getindex.php
<?php 
header("ContentType:text/plain;charset:gb2312"); 
define('SCRIPTNAV', 'getindex'); 
require_once './include/common.inc.php'; 
$keyWord=iconv('utf-8', 'gb2312', js_unescape($q)); 
$query = $db->query("SELECT DISTINCT(shopname) FROM {$dbpre}shops WHERE shopname LIKE '%$keyWord%' GROUP BY shopname ORDER BY addtime DESC LIMIT 0,10"); 
if($query) 
{ 
while ($result = $db->fetch_array($query)) 
{ 
echo $result['shopname']."\n"; 
} 
} 
//转换js escape提交过来数据 
function js_unescape($str) 
{ 
$ret = ''; 
$len = strlen($str); 
for ($i = 0; $i < $len; $i++) 
{ 
if ($str[$i] == '%' && $str[$i+1] == 'u') 
{ 
$val = hexdec(substr($str, $i+2, 4)); 
if ($val < 0x7f) $ret .= chr($val); 
else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f)); 
else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f)); 
$i += 5; 
} 
else if ($str[$i] == '%') 
{ 
$ret .= urldecode(substr($str, $i, 3)); 
$i += 2; 
} 
else $ret .= $str[$i]; 
} 
return $ret; 
} 
?>

附件如下:
http://xiazai.3water.com/200912/yuanma/jquery_autocomplete_php.rar
Javascript 相关文章推荐
javascript 闭包疑问
Dec 30 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
Mar 14 Javascript
js实现网页随机切换背景图片的方法
Nov 01 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
Sep 15 Javascript
Form表单按回车自动提交表单的实现方法
Nov 18 Javascript
Angular ui.bootstrap.pagination分页
Jan 20 Javascript
利用node.js如何搭建一个简易的即时响应服务器
May 28 Javascript
vue Render中slots的使用的实例代码
Jul 19 Javascript
vue最简单的前后端交互示例详解
Oct 11 Javascript
JavaScript JSON数据处理全集(小结)
Aug 15 Javascript
vue element 中的table动态渲染实现(动态表头)
Nov 21 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
Aug 03 Javascript
Javascript attachEvent传递参数的办法
Dec 14 #Javascript
firefox下对ajax的onreadystatechange的支持情况分析
Dec 14 #Javascript
javascript document.execCommand() 常用解析
Dec 14 #Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
Dec 14 #Javascript
JQuery Tips(2) 关于$()包装集你不知道的
Dec 14 #Javascript
js 页面传参数时 参数值含特殊字符的问题
Dec 13 #Javascript
JQuery下关于$.Ready()的分析
Dec 13 #Javascript
You might like
PHP文本数据库的搜索方法
2006/10/09 PHP
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
最短的IE判断代码
2011/03/13 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python ZipFile模块详解
2013/11/01 Python
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
python实现学生信息管理系统
2020/04/05 Python
Python基础之文件读取的讲解
2019/02/16 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
深入学习python多线程与GIL
2019/08/26 Python
Python列表元素常见操作简单示例
2019/10/25 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
培训楼经理岗位责任制
2014/02/10 职场文书
美术教师自我鉴定
2014/02/12 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
运动会100米广播稿
2015/08/19 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
PHP命令行与定时任务
2021/04/01 PHP
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
python代码实现扫码关注公众号登录的实战
2021/11/01 Python
Java设计模式中的命令模式
2022/04/28 Java/Android