是Bootstrap-3-Typeahead,不是Twitter open source的typeahead,两者用法有差异。外加如果配合原生的Bootstrap3 的话推荐还是用这个。(当然Twitter open source也有个bootstrap)。

感觉这个简单功能够用了。

现在公司的项目中后台管理界面都开始用bootstrap 3 了,界面高大尚了很多,程序员就算不太会css也不用担心做的界面太丑了。

项目中要实现Jquery UI的autocomplete控件的功能,谷歌了一下,发现有个Typeahead, 写了几个demo,感觉功能还是挺不错的,记录分享一下。

常用参数说明

  1. source:是个function或者 基本类型的数组。
  2. items :下拉选项展示的个数
  3. afterSelect:选中之后执行的回调函数。

首先,当然是引用js文件。

<script src="~/Scripts/bootstrap3-typeahead.js"></script>

Demo1

Html:

  1. <div class="panel panel-default">
  2.     <div class="panel-heading">
  3.         <div class="panel-title">页面js 普通</div>
  4.     </div>
  5.     <div class="panel-body">
  6.         <div class="row">
  7.             <div class="col-md-4">
  8.                 @* autocomplete 避免浏览器的自动提示对下拉选项的覆盖操作 *@
  9.                 <input id="local_data" autocomplete="off" data-provide="typeahead" type="text" class="input-sm form-control" placeholder="请输入(本地Array数据)" />
  10.             </div>
  11.             <div class="col-md-4">
  12.                 <button class="btn btn-success" id="look_up_array">LookUp</button>
  13.                 <button class="btn btn-success" id="get_value_array">GetValue</button>
  14.             </div>
  15.         </div>
  16.     </div>
  17. </div>

Js:

  1. var localArrayData = ['beijing', 'shanghai', 'guangzhou', 'sz', 'hangzhou', 'ningbo'];
  2. function parseLocalArrayData() {
  3.             $("#local_data").typeahead({
  4.                 source: localArrayData,//数据源
  5.                 items: 8,//最多显示个数
  6.                 updater: function (item) {
  7.                     return item;//这里一定要return,否则选中不显示,外加调用display的时候null reference错误。
  8.                 },
  9.                 displayText: function (item) {
  10.                     return "选:" + item;//返回字符串
  11.                 },
  12.                 afterSelect: function (item) {
  13.                     //选择项之后的事件 ,item是当前选中的。
  14.                 },
  15.                 delay: 500//延迟时间
  16.             });
  17.             $("#look_up_array").click(function () {
  18.                 $("#local_data").typeahead("lookup", '选');
  19.             });
  20.             $("#get_value_array").click(function () {
  21.                 var val = $("#local_data").typeahead("getActive");
  22.                 console.log(val);
  23.             });
  24.         }

Demo2

Html:

  1. <div class="panel panel-default">
  2.     <div class="panel-heading">
  3.         <div class="panel-title">页面js Object数组</div>
  4.     </div>
  5.     <div class="panel-body">
  6.         <div class="row">
  7.             <div class="col-md-4">
  8.                 <input id="local_object_data" autocomplete="off" data-provide="typeahead" type="text" class="input-sm form-control" placeholder="请输入(本地Object数据)" />
  9.             </div>
  10.             <div class="col-md-4">
  11.                 <button class="btn btn-success" id="look_up_object">LookUP</button>
  12.                 <button class="btn btn-success" id="get_value_object">GetValue</button>
  13.             </div>
  14.         </div>
  15.     </div>
  16. </div>

Js:

  1. var localObjectData = [{ id: 1, name: 'beijing' }, { id: 2, name: 'shanghai' }, { id: 3, name: 'guangzhou' }, { id: 4, name: 'sz' }];
  2. var objMap = {};
  3. function parseLocalObjectData() {
  4.             //typeahead只能处理简单的列表,所以要构造一个array string。名称对应的id放到objMap里面;
  5.             $("#local_object_data").typeahead({
  6.                 source: function (query, process) {
  7.                     var names = [];
  8.                     $.each(localObjectData, function (index, ele) {
  9.                         objMap[ele.name] = ele.id;
  10.                         names.push(ele.name);
  11.                     });
  12.                     process(names);//调用处理函数,格式化
  13.                 },
  14.                 afterSelect: function (item) {
  15.                     console.log(objMap[item]);//取出选中项的值
  16.                 }
  17.             });
  18.         }

Demo3 异步调用服务器数据,delay参数就很有用了。

Html:

  1. <div class="panel panel-default">
  2.     <div class="panel-heading">
  3.         <div class="panel-title">向服务端获取list object数组 </div>
  4.     </div>
  5.     <div class="panel-body">
  6.         <div class="row">
  7.             <div class="col-md-4">
  8.                 <input id="remote_object_data" autocomplete="off" data-provide="typeahead" type="text" class="input-sm form-control" placeholder="请输入 (获取服务器的数据)" />
  9.             </div>
  10.             <div class="col-md-4">
  11.             </div>
  12.         </div>
  13.     </div>
  14. </div>

Js:

  1. var name2Id = {};//姓名对应的id
  2. function parseServerObjectArray() {
  3.             $("#remote_object_data").typeahead({
  4.                 source: function (query, process) {
  5.                     //query是输入的值
  6.                     $.post("@Url.Action("GetNames")", { name: query }, function (e) {
  7.                         if (e.success) {
  8.                             if (e.data.length == 0) { alert("没有查到对应的人"); return; }
  9.                             var array = [];
  10.                             $.each(e.data, function (index, ele) {
  11.                                 name2Id[ele.name] = ele.id;//键值对保存下来。
  12.                                 array.push(ele.name);
  13.                             });
  14.                             process(array);
  15.                         }
  16.                     });
  17.                 },
  18.                 items: 8,
  19.                 afterSelect: function (item) {
  20.                     console.log(name2Id[item]);//打印对应的id
  21.                 },
  22.                 delay: 500
  23.             });
  24.         }

Cs: mvc 的action,post提交,返回json

  1. [HttpPost]
  2.         public JsonResult GetNames(string name)
  3.         {
  4.             try {
  5.                 var rst = db.People
  6.                     .Where(w => (w.FirstName + w.LastName).Contains(name))
  7.                     .ToList()
  8.                     .Select(w => new { id = w.PersonID, name = String.Format("{0}-{1}", w.FirstName, w.LastName) });
  9.                 return Json(new { success = true, data = rst });
  10.             } catch(Exception ex) { return Json(new { success = false, msg = ex.Message }); }
  11.         }

介绍完毕。

过两天再整理一个datatables的文档。感觉功能很强大啊。

Bootstrap-3-Typeahead的更多相关文章

  1. 【Bootstrap】 typeahead自动补全

    typeahead 这篇文章记录了我在使用typeahead的一些问题,不是很全,但是基本够用. Bootstrap提供typeahead组件来完成自动补全功能. 两种用法: 直接给标签添加属性 &l ...

  2. 30 个惊艳的 Bootstrap 扩展插件

    Bootstrap 是快速开发Web应用程序的前端工具包.它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的版式,表单,buttons,表格,网格系统等等. Boo ...

  3. bootstrap-typeahead自动补充

    官方文档:https://github.com/bassjobsen/Bootstrap-3-Typeahead 这个是基于bootstrap的typeahead与基于jquery的jquery-Ty ...

  4. Bootstrap 中的 Typeahead 组件 -- AutoComplete

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

  5. bootstrap - typeahead自动补全插件

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

  6. Bootstrap Typeahead/Jquery autocomplete自动补全

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

  7. 使用 Bootstrap Typeahead 组件

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

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

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

  9. Bootstrap中的 Typeahead 组件

    Bootstrap 中的 Typeahead 组件其实就是嵌入到其中的typeahead.js插件,可以完成输入框的自动匹配功能,在通过一些人工的调整基本可以胜任所有的匹配功能和场景,下面介绍下简单的 ...

  10. BootStrap学习2 typeahead

    首先看看这些 http://www.wrapcode.com/bootstrap/typeahead-json-objects/ http://stackoverflow.com/questions/ ...

随机推荐

  1. Unity加载AB资源

    using System.Collections; using System.Collections.Generic; using UnityEngine; public class AssetBun ...

  2. C语言函数指针与 c#委托和事件对比

    C语言: 函数指针可以节省部分代码量,写类似具有多态的函数,比如要比较最大值,如果不用函数指针就只能写比较某一类型比如int类型的max函数,这个max无法比较string的大小.函数指针的意义就不多 ...

  3. Geomystery现已上架!

    欢迎体验由王涵.程立智.郑昊.蔡镇泽.李明伦.温志成同学开发的几何解谜游戏Geomystery,现已上架Microsoft官方商城! https://www.microsoft.com/zh-cn/s ...

  4. war包远程部署访问不到问题解决过程总结

    项目完成后,先在本地ide测,用ide集成的tomcat,顺理发布,访问,然后放本地tomcat的webapp文件夹,顺理启动,访问,再放远程阿里云的tomcat的webapp文件夹,重启tomcat ...

  5. mvc项目 ajax post 返回404错误

    后台代码没有问题,但是一直出现404错误 原因:iis设置,请求中文件大小超过限制会被过滤掉,直接返回404. 解决:设置iis,应用程序->请求筛选->规则->编辑功能设置-> ...

  6. Memcached未授权访问

    概念 memcached是一个内存中的键值存储区,用于存储来自数据库调用.API调用或页面呈现结果的任意小数据块(字符串.对象).memcached简单但功能强大.其简单的设计促进了快速部署.易于开发 ...

  7. #254 Reverse a String

    翻转字符串 先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串. 你的结果必须得是一个字符串 这是一些对你有帮助的资源: Global String Object ...

  8. 【hdu2000】ASCII码排序

    题目来源:www.acm.hdu.edu.cn 题目编号:2000 ASCII码排序 /*----------------------------------------原题目------------ ...

  9. MFC单文档视图程序简介

    在视图应用程序中,应用程序的数据由文档对象代表,数据的视图由视图对象代表.MFC的Cdocument类是文档对象的基类,Cview类是视图对象的基类.应用程序的主窗口,其操作功能在MFC的Cframe ...

  10. JavaScript原生实现观察者模式

    观察者模式又叫做发布订阅模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生改变时就会通知所有观察着对象. 它是由两类对象组成,主题和观察者,主题负责发布事件 ...