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 ...
随机推荐
- Java使用iText生成word文件的完美解决方案(亲测可行)
JAVA生成WORD文件的方法目前有以下种: 一种是jacob 但是局限于windows平台 往往许多JAVA程序运行于其他操作系统 在此不讨论该方案 一种是pio但是他的excel处理很程序 wor ...
- 误用MySQL关键字导致的错误
使用Hibernate整合Spring的过程中,我使用explain作为表的字段,结果一直给我报错. 报错如下: ERROR: You have an error in your SQL syntax ...
- Ubuntu14.04安装PowerDNS踩坑实录
公司要使用PowerDNS,作为内网域名解析的工具.让我和另一组的同事学一下如何配置及调优.所以先找了两台服务器试着安装一下.这一装就是一个礼拜,经历了大大小小的坑,记下来以后可能需要参考.安装过程如 ...
- springMVC文件上传大小超过限制的问题
[转自]https://my.oschina.net/ironwill/blog/646762 springMVC是一个非常方便的web层框架,我们使用它的文件上传也非常的方便. 我们通过下面的配置来 ...
- Myeclipse 自带Tomcat启动8080端口占用
在启动Myeclipse自带的Tomcat发现报错,显示8080端口被占用 第一步:window+r 组合键,调出命令窗口. 第二步:输出命令:netstat -ano|findstr 8080 ...
- 小BAT解决大麻烦_某卡教室控制软件
@echo off mode con cols= lines= if "%1" == "h" goto begin mshta vbscript:)(windo ...
- 20145238-荆玉茗 《网络对抗技术》-Web安全基础实践
Web安全基础实践 实践过程记录 实验准备: 输入命令java -jar webgoat-container-7.0.1-war-exec.jar,一直等待等待直到出现 在浏览器中打开localhos ...
- Msql数据库连接写一个共有的连接工具
为了避免在每一个DAO中都需要自行连接connection,有多个DAO里都需要获取数据库的连接,并且在很多项目中都是一样的数据库连接. 所以就可以把获取数据库连接的代码重构到一个类里. 这样做的好处 ...
- bootstrap-table页码ALL显示为NAN
在github上查阅找到的解决办法: https://github.com/wenzhixin/bootstrap-table/issues/435 页面部分: data-page-list=&quo ...
- winform 实现定位
如何在winform中 导入地图实现定位功能 ? 从网上下个BaiDuMap.htm, 就是个js文件 在form中加入webBrowser控件,然后在窗体的加载事件中写入如下代码 webBro ...