Typeahead是Bootstrap的自动补全JS插件。

最近项目中用到,总结一下。

与autocomplish类似,通过ajax实现,实现流程是前台输入关键字,后台根据关键字查询出信息,构造json串并返回,前台接收显示。

实例一

HTML代码:

 <input type="text" class="form-control" id="employee_name" name="employee_name" data-provide="typeahead" placeholder="" autocomplete="off" disableautocomplete />
<input name="employee_id" type="hidden" value="" />

PHP部分代码:

    $suggestions = array();
$i=0;
$q = strtoupper($query);
$sql = "SELECT employee_id,employee_name from employee as e where upper(e.employee_name) like '$q%'";
$data = $conn->getAll($sql)
foreach($data as $key=>$val) {
$suggestions[$i] = $val['name'];
$data[$i]['employee_id'] = $val['employee_id'];
$i++;
}
$ar = array('query'=>$query,'suggestions'=>$suggestions,'data'=> $data);
echo json_encode( $ar);

目的就是拼接json字符串,要求返回的格式类似:

{"query":"m","suggestions":["Mafei","MMFF"],"data":[{"employee_id":"1","name":"Mafei"},{"employee_id":"4","name":"MMFF"}]}

当输出m,查询出来的关键词是"Mafei","MMFF",选中一个后要将对应的id放到隐藏的文本框中,因为实际数据库中保存的是supplier_id。

JS代码:

                        $('#employee_name').keyup(function(){
$('#employee_id').val(0);
}).typeahead({
source: function (query, process) {
var parameter = {query: query};
$.get('ajax-typeahead.php?type=employee&profile=13', parameter, function (result) {
var result = eval("(" + result + ")");
var data = result.data;
objects = [];
map = {};
$.each(data, function(i, object){
map[object.name] = object;
objects.push(object.name);
});
process(objects);
});
},
updater: function(item){
$('#employee_id').val(map[item].employee_id);
return item;
}
});

注意事项:

updater的意思是每次从关键词列表中选中值执行的操作。目的是获得每个employee_name对应的id.

实例二

有时页面中要多次使用typeahead。

如果有一个表格,每行中都有一个单元格要求值是从自动补全中获得的。

                        $('.typeahead').each(function(){
var aa = $(this);
aa.typeahead({
source: function (query, process) {
var parameter = {query: query};
$.get('ajax-typeahead.php?type=supplier', parameter, function (result) {
var result = eval("(" + result + ")");
var data = result.data;
labels = [];
mapped = {};
$.each(data, function(i, item){
mapped[item.name] = item.supplier_id;
labels.push(item.name);
});
process(labels);
});
},
updater: function(item){
aa.nextAll(".supplier_id").val(mapped[item]);
return item;
}
})
})

参考:bootstrap 2.3 typeahead使用ajax补全输入框的方法

Typeahead的使用总结的更多相关文章

  1. Bootstrap 中的 Typeahead 组件 -- AutoComplete

    Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,但是,使用上并不太方便.这里我们将介绍一下这个组件的使用. 第一,简单使用 首先,最简单 ...

  2. AngularJs的UI组件ui-Bootstrap分享(十一)——Typeahead

    Typeahead指令是一个用于智能提示或自动完成的控件,就像Jquery的AutoComplete控件一样.来看一个最简单的例子: <!DOCTYPE html> <html ng ...

  3. typeahead.js 使用记录

    github地址:https://github.com/twitter/typeahead.js 在aceAdmin界面模板中,有typeahead这一控件,版本号为0.10.2 , 这个版本对 mi ...

  4. bootstrap - typeahead自动补全插件

    $('#Sale').typeahead({ ajax: { url: '@Url.Action("../Contract/GetSale")', //timeout: 300, ...

  5. Bootstrap Typeahead/Jquery autocomplete自动补全

    使用Bootstrap Typeahead 组件: Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,自动填充. 效果如图所示: 实现方式: 1.引入 ...

  6. 第五章 使用 Bootstrap Typeahead 组件(百度下拉效果)

    推荐链接:http://www.cnblogs.com/haogj/p/3376874.html UnderScore官网:http://underscorejs.org/ 参考文档:http://w ...

  7. 【微收藏】来自Twitter的自动文字补齐jQuery插件 - Typeahead.js

    没图没逼格 事发有因 该插件可以结合本地数据进行一些操作.推荐关注一下H5的几种数据存储的方式(localstorage与sessionstorage.IndexedDB.离线缓存manifest文件 ...

  8. 使用 Bootstrap Typeahead 组件

    Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,但是,使用上并不太方便.这里我们将介绍一下这个组件的使用. 第一,简单使用 首先,最简单 ...

  9. 在 angularjs 中集成 bootstrap typeahead

    问题 在使用 typeahead 的时候,有这样一个需求,当用户选中其中一项的之后,将项目对应的 id 保存到另外一个变量中,以后在提交表单的时候,将这个 id 发送到服务器中. 但是,在 typea ...

  10. 使用升级版的 Bootstrap typeahead v1.2.2

    上次介绍了 Bootstrap 2 中附带的 typeahead,功能强大,但是使用起来不太方便,作者 Terry Rosen 已经升级了一个新版本 v1.2.2,作出了很大的改进. 下载地址 htt ...

随机推荐

  1. mysql5.7.22tar包安装

    mysql5.7.22tar包安装 #卸载系统自带的Mariadb [root@ ~]# rpm -qa|grep mariadb mariadb-libs-5.5.44-2.el7.centos.x ...

  2. CSU - 2059 Water Problem(Z线分割平面)

    一条‘Z’形线可以将平面分为两个区域,那么由N条Z形线所定义的区域的最大个数是多少呢?每条Z形线由两条平行的无限半直线和一条直线段组成 Input 首先输入一个数字T(T<100),代表有T次询 ...

  3. oracle系列(一)sqlplus命令

    该系列是向 韩顺平 老师学习的笔记 高级权限账号:scott   pwd sysdba 新建一个 Command Window,也可以 开始,运行 sqlplus 连接命令 --1.0 切换账号 SQ ...

  4. iOS原生混合RN开发最佳实践

    iOS原生混合RN开发详解 做过原生iOS开发或者Android开发的同学们肯定也都了解Hybrid,有一些Hybrid的开发经验,目前我们企业开发中运用最广泛的Hybrid App技术就是原生与H5 ...

  5. 『ACM C++』 PTA 天梯赛练习集L1 | 036-037

    这几天比较忙,所以随便做做水题了,得赶紧把英剧搞完啊啊啊啊啊啊 ------------------------------------------------L1-036-------------- ...

  6. MySQL必知必会 读书笔记二:MySQL使用

    使用MySQL 选择数据库 使用USE关键字 USE database; 了解数据库和表 如果不知道可以使用的数据库名时,可用MySQL的SHOW命令来显示这些信息. SHOW DATABASES; ...

  7. JQ中的选择器children()和find()区别

    1:children及find方法都用是用来获得element的子elements的,两者都不会返回 text node,就像大多数的jQuery方法一样. 2:children方法获得的仅仅是元素一 ...

  8. mysql的char,varchar,text,blob

    mysql的char,varchar,text,blob是几个有联系但是有有很大区别的字段类型,这算是mysql的基础吧,可是基础没有学好,恶补一下. 先简单的总结一下: char:定长,最大255个 ...

  9. Qt上FFTW組件的编译与安裝

    Qt上FFTW組件的編譯安裝 FFTW是一個做頻譜非常實用的組件,本文講述在Windows和Linux兩個平臺使用FFTW組件.Windows下的的FFTW組件已經編譯好成爲dll文件,按照開發應用的 ...

  10. python应用:爬虫框架Scrapy系统学习第四篇——scrapy爬取笔趣阁小说

    使用cmd创建一个scrapy项目: scrapy startproject project_name (project_name 必须以字母开头,只能包含字母.数字以及下划线<undersco ...