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 相关文章推荐
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
PHP实现图片自动清理的方法
Jul 08 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
php intval函数用法总结
Apr 14 PHP
thinkphp5修改view到根目录实例方法
Jul 02 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 23 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 PHP
php解析非标准json、非规范json的方式实例
Dec 10 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学习之PHP表达式
2006/10/09 PHP
php smarty 二级分类代码和模版循环例子
2011/06/01 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
Js sort排序使用方法
2011/10/17 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
python新手学习使用库
2020/06/11 Python
Python调用C语言程序方法解析
2020/07/07 Python
Python 实现集合Set的示例
2020/12/21 Python
大学自荐信
2013/12/12 职场文书
投资意向书范本
2014/04/01 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
介绍一下28个JS常用数组方法
2022/05/06 Javascript