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 和 CSS 实现脚注(Footnote)效果
Sep 09 Javascript
jQuery 过滤not()与filter()实例代码
May 10 Javascript
前端必备神器 Snap.svg 弹动效果
Nov 10 Javascript
jQuery子属性过滤选择器用法分析
Feb 10 Javascript
解析js如何获取css样式
Dec 11 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
Feb 20 Javascript
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 jQuery
在Vue项目中使用d3.js的实例代码
May 01 Javascript
基于javascript的拖拽类封装详解
Apr 19 Javascript
layui 实现自动选择radio单选框(checked)的方法
Sep 03 Javascript
Postman动态获取返回值过程详解
Jun 30 Javascript
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
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桌面中心(三) 修改数据库
2007/03/11 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
php递归创建目录的方法
2015/02/02 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
Javascript 模式实例 观察者模式
2009/10/24 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
Python中property函数用法实例分析
2018/06/04 Python
python主线程捕获子线程的方法
2018/06/17 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
生产厂厂长岗位职责
2013/12/25 职场文书
校园安全检查制度
2014/02/03 职场文书
一份创业计划书范文
2014/02/08 职场文书
协议书模板
2014/04/23 职场文书
北京申奥口号
2014/06/19 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
解析在浏览器地址栏输入一个URL后发生了什么
2021/06/21 Servers