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 相关文章推荐
模拟OICQ的实现思路和核心程序(二)
Oct 09 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
如何在smarty中增加类似foreach的功能自动加载数据
Jun 26 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
php实现将上传word文件转为html的方法
Jun 03 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
php 实现Hash表功能实例详解
Nov 29 PHP
php简单随机字符串生成方法示例
Apr 19 PHP
php成功操作redis cluster集群的实例教程
Jan 13 PHP
php面向对象重点知识分享
Sep 27 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 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
Angularjs过滤器使用详解
2016/05/25 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
python实现rsa加密实例详解
2017/07/19 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
使用python实现飞机大战游戏
2020/03/23 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
志愿者活动总结报告
2014/06/27 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
《我是什么》教学反思
2016/02/16 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS