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 正则替换 replace(regExp, function)用法
May 22 Javascript
jquery等宽输出文字插件使用介绍
Sep 18 Javascript
js实现局部页面打印预览原理及示例代码
Jul 03 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
Jun 11 Javascript
Mongoose学习全面理解(推荐)
Jan 21 Javascript
react build 后打包发布总结
Aug 24 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
Sep 25 Javascript
vue根据值给予不同class的实例
Sep 29 Javascript
js事件触发操作实例分析
Jun 21 Javascript
jQuery实现的图片点击放大缩小功能案例
Jan 02 jQuery
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
Dec 01 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基础之运算符的使用方法
2013/04/28 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
Python生成随机密码
2015/03/10 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
python调用webservice接口的实现
2019/07/12 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
房地产销售计划书
2014/01/10 职场文书
顶碗少年教学反思
2014/02/21 职场文书
学生期末评语大全
2014/04/30 职场文书
询价采购方案
2014/06/09 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
公司离职证明标准范本
2014/10/05 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
中考学习决心书
2015/02/04 职场文书
2016关于军训的心得体会
2016/01/11 职场文书
Python中for后接else的语法使用
2021/05/18 Python
TS 类型收窄教程示例详解
2022/09/23 Javascript