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 相关文章推荐
jQuery实现简单的间隔向上滚动效果
Mar 09 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
Dec 02 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
Aug 05 Javascript
通过BootStrap实现轮播图的实际应用
Sep 26 Javascript
js 获取本地文件及目录的方法(推荐)
Nov 10 Javascript
JavaScript实现星星等级评价功能
Mar 22 Javascript
JS表格组件神器bootstrap table使用指南详解
Apr 12 Javascript
极简主义法编写JavaScript类
Nov 02 Javascript
vue 添加vux的代码讲解
Nov 30 Javascript
基于Proxy的小程序状态管理实现
Jun 14 Javascript
使用webpack搭建vue环境的教程详解
Dec 31 Javascript
详解vue中v-for的key唯一性
May 15 Vue.js
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
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
解析php类的注册与自动加载
2013/07/05 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
js下用eval生成JSON对象
2010/09/17 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
js的匿名函数使用介绍
2013/12/11 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
python里将list中元素依次向前移动一位
2014/09/12 Python
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
python绘制雷达图实例讲解
2021/01/03 Python
教育技术职业规划范文
2014/03/04 职场文书
我的求职择业计划书
2014/04/04 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
公司感谢信范文
2015/01/22 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
法制教育观后感
2015/06/17 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL
Python作用域和名称空间的详细介绍
2022/04/13 Python