Typeahead的使用总结
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的使用总结的更多相关文章
- Bootstrap 中的 Typeahead 组件 -- AutoComplete
Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,但是,使用上并不太方便.这里我们将介绍一下这个组件的使用. 第一,简单使用 首先,最简单 ...
- AngularJs的UI组件ui-Bootstrap分享(十一)——Typeahead
Typeahead指令是一个用于智能提示或自动完成的控件,就像Jquery的AutoComplete控件一样.来看一个最简单的例子: <!DOCTYPE html> <html ng ...
- typeahead.js 使用记录
github地址:https://github.com/twitter/typeahead.js 在aceAdmin界面模板中,有typeahead这一控件,版本号为0.10.2 , 这个版本对 mi ...
- bootstrap - typeahead自动补全插件
$('#Sale').typeahead({ ajax: { url: '@Url.Action("../Contract/GetSale")', //timeout: 300, ...
- Bootstrap Typeahead/Jquery autocomplete自动补全
使用Bootstrap Typeahead 组件: Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,自动填充. 效果如图所示: 实现方式: 1.引入 ...
- 第五章 使用 Bootstrap Typeahead 组件(百度下拉效果)
推荐链接:http://www.cnblogs.com/haogj/p/3376874.html UnderScore官网:http://underscorejs.org/ 参考文档:http://w ...
- 【微收藏】来自Twitter的自动文字补齐jQuery插件 - Typeahead.js
没图没逼格 事发有因 该插件可以结合本地数据进行一些操作.推荐关注一下H5的几种数据存储的方式(localstorage与sessionstorage.IndexedDB.离线缓存manifest文件 ...
- 使用 Bootstrap Typeahead 组件
Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,但是,使用上并不太方便.这里我们将介绍一下这个组件的使用. 第一,简单使用 首先,最简单 ...
- 在 angularjs 中集成 bootstrap typeahead
问题 在使用 typeahead 的时候,有这样一个需求,当用户选中其中一项的之后,将项目对应的 id 保存到另外一个变量中,以后在提交表单的时候,将这个 id 发送到服务器中. 但是,在 typea ...
- 使用升级版的 Bootstrap typeahead v1.2.2
上次介绍了 Bootstrap 2 中附带的 typeahead,功能强大,但是使用起来不太方便,作者 Terry Rosen 已经升级了一个新版本 v1.2.2,作出了很大的改进. 下载地址 htt ...
随机推荐
- Ajax三级联动操作的js代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Git 初始化全局user.name 和 user.email
git config --global user.name "username" git config --global user.email "email"
- shiro简单入门介绍
shiro是apache的一个java安全框架 可以完成认证,授权,加密,会话管理,基于web继承,缓存等 功能简介: 从外部来看: shiro架构 Subject:主体,代表了当前“用户”,这个用 ...
- 如何调试在OJ中的代码
在OJ上的原始程序: class Solution { public: ) return; ; ; while(*str != '\0'){ if(*str == ' '){ blank++; len ...
- 如何查看Windows下端口占用情况
开始---->运行---->cmd,或者是window+R组合键,调出命令窗口 输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是49157,首 ...
- DU1525 Euclid's Game 博弈
HDU1525 Euclid's Game 博弈 题意 给定两个数字 a, b. 每次只能用 较大的值 减去 较小的值的倍数, 两个人轮流进行操作, 第一个得到 0 的胜利. 分析 对于 a == b ...
- 浮动产生的高度坍塌解决方法以及使用siblings()方法获取同级元素
高度坍塌:如果一个没有设置高度div里的元素都是浮动元素,这个时候就可能产生高度坍塌,因为div的高度都是普通元素撑起来的,div里的元素浮动之后,元素就会脱离文档流,所以父级的div高度就可能为零, ...
- 第三天-零基础学习python
1.回忆.列表方法,append(),extend(),insert() 2.列表获取元素: >>> member = ['HU','YU','HUYAN','HUJIAMU'] ...
- 微信小程序 | 未来O2O电商的“阴谋”
发展历史 2016年1月11日,微信之父张小龙时隔多年的公开亮相,提出了公众号服务的短板,而透露微信内部正在研发的新形态工具,称之"微信小程序". 2016年9月21日,微信小程序 ...
- AFNetworking 打印错误信息(二进制信息)
AFNetworking 打印错误信息(二进制信息) NSError *underError = error.userInfo[@"NSUnderlyingError"]; NSD ...