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 相关文章推荐
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
PHP中获取文件扩展名的N种方法小结
Feb 27 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
解析如何用php screw加密php源代码
Jun 20 PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 PHP
PHP中使用BigMap实例
Mar 30 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
php微信开发之谷歌测距
Jun 14 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 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 编程请选择正确的文本编辑软件
2006/12/21 PHP
PHP Google的translate API代码
2008/12/10 PHP
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
处理单名多值表单的详解
2013/06/08 PHP
8个必备的PHP功能开发
2015/10/02 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
javascript数据类型详解
2017/02/07 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
Python标准异常和异常处理详解
2015/02/02 Python
Scrapy的简单使用教程
2017/10/24 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
opencv实现图像几何变换
2021/03/24 Python
知名企业招聘广告词大全
2014/03/18 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书