使用bootstrap select2进行模糊查询人员选择

最近在项目中客户指出,我们选择人员的操作相对复杂,需要改进,同时提议通过模糊查询获取相关人员信息,为满足客户提出的需求,便在网上查找相应处理方案,发现有多个前段框架都可处理问题。

一、jquery autocomplete.js 自动完成插件

demo效果如下:

这种效果选择的文本不是整体,可以手动对该整体进行操作,需要我们另外对该样式进行重构,比较麻烦

API地址:http://jqueryui.com/autocomplete/#multiple

二、jQuery ligerUI.js 插件

demo效果如下:

这个相对功能更加强大一些,但是相对之前jquery autocomplete.js插件存在的问题还是有的

API地址:http://www.ligerui.com/demo.html

三、jquery.tagsinput-revisited.js 标签输入插件

demo效果如下:

这个插件效果基本能满足本项目需求,但网上缺乏相应详细api,作为一个标签输入插件,真正使用起来还是比较麻烦的。

四、bootstrap select2.js下拉插件(本次能够使用的插件)

demo效果如下:

这个插件功能非常强大,依赖bootstrap,只需引入相应js和css即可,上手比较简单,满足ajax动态查询,支持分页,自带模糊查询功能,输入框自动拓展。

代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>select2</title>
    <!-- Tell the browser to be responsive to screen width -->
    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
    <!-- Bootstrap 3.3.5 -->
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <!-- select2 style --> 
    <link rel="stylesheet" href="select2.min.css">
    
  </head>
 
  <body class="hold-transition skin-blue sidebar-mini" style="background-color:#ecf0f5;">
    <!-- Main content -->
    <section class="content container" style="margin-top: 15px;">
        <div class="col-sm-4">
            <h3>本地数据方式</h3>
            <select class="form-control input-sm downList1">
                <option></option>
            </select>
            <p class="p1"></p>
            <hr>
            <button type="button" class="btn btn-sm btn-primary" id="one">click</button>
        </div>
        <div class="col-sm-4">
            <h3>AJAX获取数据方式</h3>
            <select class="form-control input-sm downList2">
                <option></option>
            </select>
            <p class="p2"></p>
            <hr>
            <button type="button" class="btn btn-sm btn-primary" id="two">click</button>
        </div>
		</section><!-- /.content -->
		
    <script src="jquery/jQuery-2.1.4.min.js"></script>
    <script src="select2.full.min.js"></script>
    <script src="i18n/zh-CN.js"></script>
  </body>
  <script>
    //one  本地数据方式
    var dataList = [
            { id: 0, text: 'enhancement' }, 
            { id: 1, text: 'bug' }, 
            { id: 2, text: 'duplicate' }, 
            { id: 3, text: 'invalid' }, 
            { id: 4, text: 'wontfix' }
          ];
    $(".downList1").select2({
        data: dataList,
        placeholder:'请选择',//默认文字提示
        language: "zh-CN",
        allowClear: true//允许清空
    })
    $('#one').click(function(){
        var id = $(".downList1").select2("data")[0].id;
        var text = $(".downList1").select2("data")[0].text;
        var html = '您选择了:' + '{ id:' + id + ', ' + 'text: ' + text + ' }';
        $('.p1').text(html);
    })
    //two  AJAX获取数据方式
    $(".downList2").select2({
      ajax: {
        type:'GET',
        url: "url",
        dataType: 'json',
        delay: 250,
        data: function (params) {
          return {
            q: params.term, // search term 请求参数
            page: params.page
          };
        },
        processResults: function (data, params) {
          params.page = params.page || 1;
          /*var itemList = [];
          var arr = data.result.list
          for(item in arr){
              itemList.push({id: item, text: arr[item]})
          }*/
          return {
            results: data.items,//itemList
            pagination: {
              more: (params.page * 30) < data.total_count
            }
          };
        },
        cache: true
      },
      placeholder:'请选择',//默认文字提示
      language: "zh-CN",
      tags: true,//允许手动添加
      allowClear: true,//允许清空
      escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
      minimumInputLength: 1,
      formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
      formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
    });
    $('#two').click(function(){
        var id = $(".downList2").select2("data")[0].id;
        var text = $(".downList2").select2("data")[0].text;
        var html = '您选择了:' + '{ id:' + id + ', ' + 'text: ' + text + ' }';
        $('.p2').text(html);
    })
  </script>
  
</html>

demo下载:https://download.csdn.net/download/lss1351396825/10937663

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值