bootstrap suggest搜索建议插件使用详解


Posted in Javascript onMarch 25, 2017

近日因工作需要看了下此插件。

首先下载bootstrap js包。添加此插件的引用。注意css样式要引用,不能忘记。

bootstrap suggest搜索建议插件使用详解

bootstrap suggest搜索建议插件使用详解

前台页面代码,因为楼主做的是选项卡切换查询不同的结果。

<tr>
  <th style="background: #fff;" width="30%">类型:</th>
       <td width="70%">
         <select class="selectpicker show-tick" id="SlideType">
           <option value="2">生活</option>
           <option value="1">首页</option>
           <option value="3">作品</option>
         </select>
       </td>
     </tr>
     <tr>
       <th style="background:#fff">标题:</th>
       <td>
 
         <div class="input-group" style="width:300px">
           <input type="text" class="form-control" id="Title">
           <div class="input-group-btn">
             <button type="button" class="btn btn-white dropdown-toggle" data-toggle="dropdown">
               <span class="caret"></span>
             </button>
             <ul class="dropdown-menu dropdown-menu-right" role="menu"></ul>
           </div>
           <!-- /btn-group -->
         </div>
       </td>
</tr> 
//搜索建议框
      /* $('#Title').keyup(function () {
         var obj = $('#SlideType').val();
         var txtName = $('#Title').val().trim();
         $.post("/Slide/LoadSelect", { Index: obj, Name: txtName }, function (data) {
           if (data != null) {
             data = JSON.parse(data);
             var testdataBsSuggest = $("#Title").bsSuggest({
               indexId: 0,
               indexKey: 1,
               data: {
                 "value": data
               }
             }).on('onSetSelectValue', function (e, data) {
               var url = "";
               switch (obj) {
                 case "1": url = "";
                   break;
                 case "2": url = "HomeLife/HomeKnowledgeDetails?InfoGuid=";
                   break;
                 case "3": url = "";
                   break;
                 default:

               }
               $("#Url").val(url + data.id);
             });
           }
         });
       });*/

这是楼主根据不同的选项请求查询不同的数据,再在结果中搜索

下面说的就是第二种,是搜索插件内部的请求。

如下:

function GetSuggest(obj) {
      var testBsSuggest = $("#Title").bsSuggest({
        url: "/Slide/LoadSelect?Keyword=" + obj + "",
        getDataMethod: "firstByUrl",//获取数据的方式,url:一直从url请求;data:从 options.data 获取;firstByUrl:第一次从Url获取全部数据,之后从options.data获取
        effectiveFieldsAlias: { Title: "标题" },
        searchFields: ["Title"],
        idField: "InfoGuid",
        keyField: "Title",
        effectiveFields: ["Title"],
        showHeader: true,//显示 header
        showBtn: true,   //不显示下拉按钮
        delayUntilKeyup: false, //获取数据的方式为 firstByUrl 时,延迟到有输入/获取到焦点时才请求数据
      }).on('onSetSelectValue', function (e, keyword) {
        var url = "";
        switch (obj) {
          case "1": url = "";
            break;
          case "2": url = UrlJump(keyword.id);
            break;
          case "3": url = "";
            break;
        }

        $("#Url").val(url + keyword.id.substring(0, keyword.id.length - 1));
      });
    }

对应的后台代码:

bootstrap suggest搜索建议插件使用详解

最终页面显示的结果。

bootstrap suggest搜索建议插件使用详解

看看以下配置说明可以更改不同的需求。

####方法调用

禁用提示: $("input#test").bsSuggest("disable");
启用提示: $("input#test").bsSuggest("enable");
销毁插件: $("input#test").bsSuggest("destroy");
查看版本:$("input#test").bsSuggest("version");
####事件监听

onDataRequestSuccess: 当 AJAX 请求数据成功时触发,并传回结果到第二个参数
onSetSelectValue:当从下拉菜单选取值时触发,并传回设置的数据到第二个参数
onUnsetSelectValue:当设置了 idField,且自由输入内容时触发(与背景警告色显示同步)
$("#test")
  .on('onDataRequestSuccess', function (event, result) {
    console.log(result);
  })
  .on('onSetSelectValue', function (e, keyword) {
    console.log('onSetSelectValue: ', keyword);
  })
  .on('onUnsetSelectValue', function (e) {
    console.log('onUnsetSelectValue');
  });

配置参数

参数列表中的值均为插件默认值

var defaultOptions = {
  url: null,           //请求数据的 URL 地址
  jsonp: null,          //设置此参数名,将开启jsonp功能,否则使用json数据结构
  data: {       
    value: []        
  },               //提示所用的数据,注意格式
  indexId: 0,           //每组数据的第几个数据,作为input输入框的 data-id,设为 -1 且 idField 为空则不设置此值
  indexKey: 0,          //每组数据的第几个数据,作为input输入框的内容
  idField: '',          //每组数据的哪个字段作为 data-id,优先级高于 indexId 设置(推荐)
  keyField: '',          //每组数据的哪个字段作为输入框内容,优先级高于 indexKey 设置(推荐)

  /* 搜索相关 */
  autoSelect: true,        //键盘向上/下方向键时,是否自动选择值
  allowNoKeyword: true,      //是否允许无关键字时请求数据
  getDataMethod: 'firstByUrl',  //获取数据的方式,url:一直从url请求;data:从 options.data 获取;firstByUrl:第一次从Url获取全部数据,之后从options.data获取
  delayUntilKeyup: false,     //获取数据的方式 为 firstByUrl 时,是否延迟到有输入时才请求数据
  ignorecase: false,       //前端搜索匹配时,是否忽略大小写
  effectiveFields: [],      //有效显示于列表中的字段,非有效字段都会过滤,默认全部。
  effectiveFieldsAlias: {},    //有效字段的别名对象,用于 header 的显示
  searchFields: [],        //有效搜索字段,从前端搜索过滤数据时使用,但不一定显示在列表中。effectiveFields 配置字段也会用于搜索过滤
  twoWayMatch: true,       // 是否双向匹配搜索。为 true 即输入关键字包含或包含于匹配字段均认为匹配成功,为 false 则输入关键字包含于匹配字段认为匹配成功

  multiWord: false,        //以分隔符号分割的多关键字支持
  separator: ',',         //多关键字支持时的分隔符,默认为半角逗号

  /* UI */
  autoDropup: false,       //选择菜单是否自动判断向上展开。设为 true,则当下拉菜单高度超过窗体,且向上方向不会被窗体覆盖,则选择菜单向上弹出
  autoMinWidth: false,      //是否自动最小宽度,设为 false 则最小宽度不小于输入框宽度
  showHeader: false,       //是否显示选择列表的 header。为 true 时,有效字段大于一列则显示表头
  showBtn: true,         //是否显示下拉按钮
  inputBgColor: '',        //输入框背景色,当与容器背景色不同时,可能需要该项的配置
  inputWarnColor: 'rgba(255,0,0,.1)', //输入框内容不是下拉列表选择时的警告色
  listStyle: {
    'padding-top': 0,
    'max-height': '375px',
    'max-width': '800px',
    'overflow': 'auto',
    'width': 'auto',
    'transition': '0.3s',
    '-webkit-transition': '0.3s',
    '-moz-transition': '0.3s',
    '-o-transition': '0.3s'
  },               //列表的样式控制
  listAlign: 'left',       //提示列表对齐位置,left/right/auto
  listHoverStyle: 'background: #07d; color:#fff', //提示框列表鼠标悬浮的样式
  listHoverCSS: 'jhover',     //提示框列表鼠标悬浮的样式名称
  clearable: false,        // 是否可清除已输入的内容

  /* key */
  keyLeft: 37,          //向左方向键,不同的操作系统可能会有差别,则自行定义
  keyUp: 38,           //向上方向键
  keyRight: 39,          //向右方向键
  keyDown: 40,          //向下方向键
  keyEnter: 13,          //回车键

  /* methods */  
  fnProcessData: processData,   //格式化数据的方法,返回数据格式参考 data 参数
  fnGetData: getData,       //获取数据的方法,无特殊需求一般不作设置
  fnAdjustAjaxParam: null,    //调整 ajax 请求参数方法,用于更多的请求配置需求。如对请求关键字作进一步处理、修改超时时间等
  fnPreprocessKeyword: null    //搜索过滤数据前,对输入关键字作进一步处理方法。注意,应返回字符串
};

至此结束。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
解读IE和firefox下JScript和HREF的执行顺序
Jan 12 Javascript
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
Jun 11 Javascript
jquery 多行滚动代码(附详细解释)
Jun 17 Javascript
js jquery数组介绍
Jul 15 Javascript
js移除事件 js绑定事件实例应用
Nov 28 Javascript
Javascript 垃圾收集机制介绍理解
May 14 Javascript
JQuery实现左右滚动菜单特效
Sep 28 Javascript
不定义JQuery插件 不要说会JQuery
Mar 07 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
详解Node.js access_token的获取、存储及更新
Jun 20 Javascript
JavaScript实现获取select下拉框中第一个值的方法
Feb 06 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
Apr 27 Javascript
JS实现列表页面隔行变色效果
Mar 25 #Javascript
angular仿支付宝密码框输入效果
Mar 25 #Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 #jQuery
axios基本入门用法教程
Mar 25 #Javascript
Bootstrap DateTime Picker日历控件简单应用
Mar 25 #Javascript
ECMAScript6 新特性范例大全
Mar 24 #Javascript
Three.js获取鼠标点击的三维坐标示例代码
Mar 24 #Javascript
You might like
Symfony页面的基本创建实例详解
2015/01/26 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
python分割列表(list)的方法示例
2017/05/07 Python
浅谈django的render函数的参数问题
2018/10/16 Python
详解Python字典小结
2018/10/20 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
python虚拟环境完美部署教程
2019/08/06 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
python3 xpath和requests应用详解
2020/03/06 Python
django 数据库返回queryset实现封装为字典
2020/05/19 Python
北京华建集团SQL面试题
2014/06/03 面试题
院药学专业个人求职信
2013/09/21 职场文书
材料成型专业个人求职信范文
2013/09/25 职场文书
畜牧兽医本科生的自我评价
2014/03/03 职场文书
培训讲师岗位职责
2014/04/13 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
爱晚亭导游词
2015/02/09 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
JavaScript的Set数据结构详解
2022/02/18 Javascript
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL