PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能


Posted in PHP onApril 27, 2015

我们在很多项目中使用了搜索功能来帮助用户更快更准确的找到想要的信息。本文将介绍如何实现用户输入自动提示的功能,就像谷歌百度搜索引擎一样,当用户输入关键字时,输入框下方会有提示,将与关键字相关的信息展现出来供用户选择,提升了用户体验。

本文将使用jquery ui的autocomplete插件,结合后端PHP,数据源通过PHP读取mysql数据表的数据。

PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能

XHTML

首先将jquery库和相关ui插件,以及css导入。

<link rel="stylesheet" href="jquery.ui.autocomplete.css"/> 

<script type="text/javascript" src="js/jquery.js"></script> 

<script type="text/javascript" src="ui/jquery.ui.core.js"></script> 

<script type="text/javascript" src="ui/jquery.ui.widget.js"></script> 

<script type="text/javascript" src="ui/jquery.ui.position.js"></script> 

<script type="text/javascript" src="ui/jquery.ui.autocomplete.js"></script>

jQuery ui 插件可以在官网上下载:
接着在body中写一个输入框:

<input type="text" id="key" name="key" />

jQuery

$(function(){ 

    $("#key").autocomplete({ 

        source: "search.php", 

        minLength: 2 

    }); 

});

一看就明白,调用autocomplete插件,数据源来自search.php,当用户输入1个字符的时候就调用数据源。autocomplte插件提供了几个可配置的参数:
disabled:是否在页面加载后不可用,默认为false,这个没必要设置成true,没有多大意义。
appendTo:输入时下拉的提示框追加元素,默认为"body"。
autoFocus:默认为false,当设置成true时,下拉提示框第一个将会是被选中的状态。
delay:加载数据时的延迟时间,默认为300,单位毫秒。
minLength:输入多少个字符时就会出现下拉提示,默认为1。
position:定义下拉提示框的位置。
source:定义数据源,数据源必须是json形式的,本例是通过请求search.php获取的数据源。
autocomplete还提供了许多事件和方法,详情请查看其官网:

PHP

调用了autocomplete插件后,还并没有提示效果,别着急,因为需要调用数据源。
首先我们需要一张表,并要往表中添加适量数据,表的结构如下:

CREATE TABLE `art` ( 
 `id` int(11) NOT NULL auto_increment, 
 `title` varchar(100) NOT NULL, 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

 
请自行建表,并往表art中添加数据。

search.php实现了连接Mysql数据库,并根据前端用户的输入,查询并获取数据表中相匹配的内容,然后以JSON形式输出。

include_once("connect.php"); //连接数据库 
 
$q = strtolower($_GET["term"]); //获取用户输入的内容 
$query=mysql_query("select * from art where title like '$q%' limit 0,10"); 
//查询数据库,并将结果集组成数组 
while ($row=mysql_fetch_array($query)) { 
  $result[] = array( 
    'id' => $row['id'], 
    'label' => $row['title'] 
  ); 
} 
echo json_encode($result); //输出JSON数据

最后输出的JSON数据格式为:

[{"id":"3","title":"\u4f7f\u7528CSS\u548cjQuery\u5236\u4f5c\u6f02\u4eae\u7684\u4e0b 

\u62c9\u9009\u9879\u83dc\u5355"}, 

{"id":"4","title":"\u4f7f\u7528jQuery\u548cCSS\u63a7\u5236\u9875\u9762\u6253\u5370 

\u533a\u57df"}]

这时,再测试下输入,是不是看到你要的效果了呢?
最后,值得一提的是,autocomplete插件在firefox上有一个输入BUG,输入后并不能提示,需要向前空格再退格才有提示。网上有很多同学给出了解决方案,但是目前最新的autocomplete插件代码貌视进行了重构,我的解决方法是,在133行中加入如下代码:

.bind("input.autocomplete",function(){ 
  //修复FF不支持中文bug 
  self.search(self.item); 
});

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
图象函数中的中文显示
Oct 09 PHP
解析ajax事件的调用顺序
Jun 17 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
ThinkPHP框架设计及扩展详解
Nov 25 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
PHP实现批量删除(封装)
Apr 28 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
Mar 08 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
Jun 03 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
Oct 21 PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 #PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 #PHP
php使用cookie实现记住登录状态
Apr 27 #PHP
php curl请求信息和返回信息设置代码实例
Apr 27 #PHP
PHP rsa加密解密使用方法
Apr 27 #PHP
PHP、Java des加密解密实例
Apr 27 #PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 #PHP
You might like
php使用GD实现颜色渐变实例
2015/06/02 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
js实现图片轮播效果
2015/12/19 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
[51:34]Ti4主赛事胜者组 DK vs EG 2
2014/07/19 DOTA
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
python读取指定字节长度的文本方法
2019/08/27 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
python lambda的使用详解
2021/02/26 Python
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
最新结婚典礼主持词
2014/03/14 职场文书
初中生评语大全
2014/04/24 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
中班上学期个人总结
2015/02/12 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android