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 web页面刷新的方法收集
Jul 02 Javascript
Extjs中常用表单介绍与应用
Jun 07 Javascript
xml文档转换工具,附图表例子(hta)
Nov 17 Javascript
js下通过prototype扩展实现indexOf的代码
Dec 08 Javascript
如何将JS的变量值传递给ASP变量
Dec 10 Javascript
jquery退出each循环的写法
Feb 26 Javascript
jquery实现的树形目录实例
Jun 26 Javascript
简单学习vue指令directive
Nov 03 Javascript
ES5 ES6中Array对象去除重复项的方法总结
Apr 27 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
May 10 Javascript
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 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下清空字符串中的HTML标签的代码
2010/09/06 PHP
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
javaScript如何生成xmlhttp
2013/12/16 Javascript
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
2017/01/04 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
python里 super类的工作原理详解
2019/06/19 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
HTML5调用手机摄像头拍照的实现思路及代码
2014/06/15 HTML / CSS
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
培训班主持词
2014/03/28 职场文书
低碳环保演讲稿
2014/08/28 职场文书
2014年度个人工作总结
2014/11/07 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript