Bootstrap-3-Typeahead
是Bootstrap-3-Typeahead,不是Twitter open source的typeahead,两者用法有差异。外加如果配合原生的Bootstrap3 的话推荐还是用这个。(当然Twitter open source也有个bootstrap)。
感觉这个简单功能够用了。
现在公司的项目中后台管理界面都开始用bootstrap 3 了,界面高大尚了很多,程序员就算不太会css也不用担心做的界面太丑了。
项目中要实现Jquery UI的autocomplete控件的功能,谷歌了一下,发现有个Typeahead, 写了几个demo,感觉功能还是挺不错的,记录分享一下。
常用参数说明
- source:是个function或者 基本类型的数组。
- items :下拉选项展示的个数
- afterSelect:选中之后执行的回调函数。
首先,当然是引用js文件。
<script src="~/Scripts/bootstrap3-typeahead.js"></script>
Demo1

Html:
- <div class="panel panel-default">
- <div class="panel-heading">
- <div class="panel-title">页面js 普通</div>
- </div>
- <div class="panel-body">
- <div class="row">
- <div class="col-md-4">
- @* autocomplete 避免浏览器的自动提示对下拉选项的覆盖操作 *@
- <input id="local_data" autocomplete="off" data-provide="typeahead" type="text" class="input-sm form-control" placeholder="请输入(本地Array数据)" />
- </div>
- <div class="col-md-4">
- <button class="btn btn-success" id="look_up_array">LookUp</button>
- <button class="btn btn-success" id="get_value_array">GetValue</button>
- </div>
- </div>
- </div>
- </div>
Js:
- var localArrayData = ['beijing', 'shanghai', 'guangzhou', 'sz', 'hangzhou', 'ningbo'];
- function parseLocalArrayData() {
- $("#local_data").typeahead({
- source: localArrayData,//数据源
- items: 8,//最多显示个数
- updater: function (item) {
- return item;//这里一定要return,否则选中不显示,外加调用display的时候null reference错误。
- },
- displayText: function (item) {
- return "选:" + item;//返回字符串
- },
- afterSelect: function (item) {
- //选择项之后的事件 ,item是当前选中的。
- },
- delay: 500//延迟时间
- });
- $("#look_up_array").click(function () {
- $("#local_data").typeahead("lookup", '选');
- });
- $("#get_value_array").click(function () {
- var val = $("#local_data").typeahead("getActive");
- console.log(val);
- });
- }
Demo2

Html:
- <div class="panel panel-default">
- <div class="panel-heading">
- <div class="panel-title">页面js Object数组</div>
- </div>
- <div class="panel-body">
- <div class="row">
- <div class="col-md-4">
- <input id="local_object_data" autocomplete="off" data-provide="typeahead" type="text" class="input-sm form-control" placeholder="请输入(本地Object数据)" />
- </div>
- <div class="col-md-4">
- <button class="btn btn-success" id="look_up_object">LookUP</button>
- <button class="btn btn-success" id="get_value_object">GetValue</button>
- </div>
- </div>
- </div>
- </div>
Js:
- var localObjectData = [{ id: 1, name: 'beijing' }, { id: 2, name: 'shanghai' }, { id: 3, name: 'guangzhou' }, { id: 4, name: 'sz' }];
- var objMap = {};
- function parseLocalObjectData() {
- //typeahead只能处理简单的列表,所以要构造一个array string。名称对应的id放到objMap里面;
- $("#local_object_data").typeahead({
- source: function (query, process) {
- var names = [];
- $.each(localObjectData, function (index, ele) {
- objMap[ele.name] = ele.id;
- names.push(ele.name);
- });
- process(names);//调用处理函数,格式化
- },
- afterSelect: function (item) {
- console.log(objMap[item]);//取出选中项的值
- }
- });
- }
Demo3 异步调用服务器数据,delay参数就很有用了。

Html:
- <div class="panel panel-default">
- <div class="panel-heading">
- <div class="panel-title">向服务端获取list object数组 </div>
- </div>
- <div class="panel-body">
- <div class="row">
- <div class="col-md-4">
- <input id="remote_object_data" autocomplete="off" data-provide="typeahead" type="text" class="input-sm form-control" placeholder="请输入 (获取服务器的数据)" />
- </div>
- <div class="col-md-4">
- </div>
- </div>
- </div>
- </div>
Js:
- var name2Id = {};//姓名对应的id
- function parseServerObjectArray() {
- $("#remote_object_data").typeahead({
- source: function (query, process) {
- //query是输入的值
- $.post("@Url.Action("GetNames")", { name: query }, function (e) {
- if (e.success) {
- if (e.data.length == 0) { alert("没有查到对应的人"); return; }
- var array = [];
- $.each(e.data, function (index, ele) {
- name2Id[ele.name] = ele.id;//键值对保存下来。
- array.push(ele.name);
- });
- process(array);
- }
- });
- },
- items: 8,
- afterSelect: function (item) {
- console.log(name2Id[item]);//打印对应的id
- },
- delay: 500
- });
- }
Cs: mvc 的action,post提交,返回json
- [HttpPost]
- public JsonResult GetNames(string name)
- {
- try {
- var rst = db.People
- .Where(w => (w.FirstName + w.LastName).Contains(name))
- .ToList()
- .Select(w => new { id = w.PersonID, name = String.Format("{0}-{1}", w.FirstName, w.LastName) });
- return Json(new { success = true, data = rst });
- } catch(Exception ex) { return Json(new { success = false, msg = ex.Message }); }
- }
介绍完毕。
过两天再整理一个datatables的文档。感觉功能很强大啊。
Bootstrap-3-Typeahead的更多相关文章
- 【Bootstrap】 typeahead自动补全
typeahead 这篇文章记录了我在使用typeahead的一些问题,不是很全,但是基本够用. Bootstrap提供typeahead组件来完成自动补全功能. 两种用法: 直接给标签添加属性 &l ...
- 30 个惊艳的 Bootstrap 扩展插件
Bootstrap 是快速开发Web应用程序的前端工具包.它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的版式,表单,buttons,表格,网格系统等等. Boo ...
- bootstrap-typeahead自动补充
官方文档:https://github.com/bassjobsen/Bootstrap-3-Typeahead 这个是基于bootstrap的typeahead与基于jquery的jquery-Ty ...
- Bootstrap 中的 Typeahead 组件 -- AutoComplete
Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,但是,使用上并不太方便.这里我们将介绍一下这个组件的使用. 第一,简单使用 首先,最简单 ...
- bootstrap - typeahead自动补全插件
$('#Sale').typeahead({ ajax: { url: '@Url.Action("../Contract/GetSale")', //timeout: 300, ...
- Bootstrap Typeahead/Jquery autocomplete自动补全
使用Bootstrap Typeahead 组件: Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,自动填充. 效果如图所示: 实现方式: 1.引入 ...
- 使用 Bootstrap Typeahead 组件
Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,但是,使用上并不太方便.这里我们将介绍一下这个组件的使用. 第一,简单使用 首先,最简单 ...
- 使用升级版的 Bootstrap typeahead v1.2.2
上次介绍了 Bootstrap 2 中附带的 typeahead,功能强大,但是使用起来不太方便,作者 Terry Rosen 已经升级了一个新版本 v1.2.2,作出了很大的改进. 下载地址 htt ...
- Bootstrap中的 Typeahead 组件
Bootstrap 中的 Typeahead 组件其实就是嵌入到其中的typeahead.js插件,可以完成输入框的自动匹配功能,在通过一些人工的调整基本可以胜任所有的匹配功能和场景,下面介绍下简单的 ...
- BootStrap学习2 typeahead
首先看看这些 http://www.wrapcode.com/bootstrap/typeahead-json-objects/ http://stackoverflow.com/questions/ ...
随机推荐
- [Java基础复习] -- x. 正则表达式的使用
序号待定, 先用x占位表示 理论知识待完善, 先贴上代码 import java.util.regex.Matcher; import java.util.regex.Pattern; import ...
- kvm-qcow2派生镜像的远程备份的方法!
在虚拟化环境中,关于虚拟机的远程备份是一个比较重要的环节,这个是有关于整个机房挂掉之后,仍然可以恢复的最后一招. 在kvm中这种情况可以通过直接备份虚拟机的镜像文件(qcow2)到远端存储解决. 但有 ...
- Django积木块11 —— 缓存
缓存 Django的缓存可以缓存视图中的函数,模版中的内容,和一些不长变化的数据. # setting CACHES = { 'default':{ 'BACKEND':'django.core.ca ...
- Borg, Omega, and Kubernetes读后笔记
前言 最近又读了一遍 Borg, Omega, and Kubernetes 这篇文章,觉得这个文章写得很好,让我对架构设计有了进一步的认识,所以想写一篇读后笔记. 原文地址,还有篇中文翻译的,这个中 ...
- java(一) 基础部分
1.11.简单讲一下java的跨平台原理 Java通过不同的系统.不同版本.不同位数的java虚拟机(jvm),来屏蔽不同的系统指令集差异而对外体统统一的接口(java API),对于我们普通的jav ...
- Vue笔记整理——第一天
1.为什么学习Vue? 提高开发效率. 提高效率历程:原生js——>jq(解决兼容性)——>前端模板引擎——>Vue.js(减少DOM操作,注重数据业务逻辑). 2.框架与库的区别? ...
- Python之旅Day5 列表生成式 生成器 迭代器 装饰器
装饰器 器即函数,装饰即修饰,意指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 装饰器涉及的知识点= 高阶函数+函数嵌套+闭包 在遵循下面两个原则的前提下为被装饰者新功能 ...
- flask上下文详解
一.前言 了解过flask的python开发者想必都知道flask中核心机制莫过于上下文管理,当然学习flask如果不了解其中的处理流程,可能在很多问题上不能得到解决,当然我在写本篇文章之前也看到了很 ...
- 刺透内网的HTTP代理
从偶然出发 在做测试的时候发现了这样一个漏洞,原请求报文如下: GET / HTTP/1.1 Host: attack_website [... HEADER ...] ... 当时最初目的是想测SS ...
- Android优化指南
Android系统中GC内存泄漏的原因 主动回收内存System.gc();.getruntime.runtime.gc 导致内存泄漏主要的原因是,申请了内存空间而忘记了释放.如果程序中存在对无用对象 ...