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 相关文章推荐
多个iframe自动调整大小的问题
Sep 18 Javascript
Javascript 跨域访问解决方案
Feb 14 Javascript
JS跨域总结
Aug 30 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
Nov 23 Javascript
jQuery实现手机自定义弹出输入框
Jun 13 Javascript
Javascript中引用类型传递的知识点小结
Mar 06 Javascript
详解微信小程序 登录获取unionid
Jun 27 Javascript
vue.js移动数组位置,同时更新视图的方法
Mar 08 Javascript
jQuery实现的简单获取索引功能示例
Jun 04 jQuery
vue使用laydate时间插件的方法
Nov 14 Javascript
基于Three.js实现360度全景图片
Dec 30 Javascript
基于vue实现一个神奇的动态按钮效果
May 15 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 cURL和Rolling cURL并发方式比较
2013/10/30 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
php数据库操作model类(使用__call方法)
2016/11/16 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
js命名空间写法示例
2015/12/18 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
说出数据连接池的工作机制是什么?
2013/04/19 面试题
外语系毕业生自荐信范文
2013/12/16 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
2014年市场部工作总结
2014/11/25 职场文书
公司人事管理制度
2015/08/05 职场文书
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python