bootstrap-select search后台查詢


   對比了多款bootstrap系列的插件,最終還是選擇了bootstrap-select。選擇他的原因是他比較簡潔大方。但是在使用的過程中還是發現了一些使用的問題。在這我一一道來。

 https://www.cnblogs.com/landeanfen/p/5099332.html(其他兩種select參考)

 首先我的業務需求是

  1. 可以多選 
  2. 搜索框可以模糊查詢,可以后台查詢。

  當然主要的實現難度是在第二個環節

   bootstrap-select的 search是在已經存在的option中進行篩選的,由於我的下拉框數據基數過於龐大,我是用oninput執行數據填充操作。實現代碼如下,我是把后台請求的所有數據緩存在瀏覽器中,每次去瀏覽器緩存中拿到數據並填充到select中,記住一定要在append之后執行$('.selectpicker').selectpicker('refresh');不然無法顯示,如果追加過后的下拉框過於長的話你也可以設置顯示的長度$('.selectpicker').selectpicker({actionsBox: true, //全選,取消全選按鈕liveSearch: true,size:6});

    

 document.getElementById("bs-searchbox").oninput = function () {
            var keyword = $("#bs-searchbox  input").val();
            if (keyword.length > 3)//當字符長度等於四的時候返回查詢結果
            {
                var ssdata = sessionStorage.getItem("CarList");
                if (ssdata != null) {
                    var html = "";
                    var jsondata = JSON.parse(ssdata);
                    var returnarr = ArrayLike(jsondata, keyword)
                    _.each(returnarr, function (d) {
                        html += '<option value=' + d.CarID + '>' + d.CarName + '</option>';
                    })
                    $(".selectpicker").append(html);
                    $('.selectpicker').selectpicker('refresh');

                }
            }
            //if (keyword.length ==0) {
            //    if ($(".bs-searchbox").nextAll("ul") != null) {
            //        $(".bs-searchbox").nextAll("ul").remove();
            //    }
            //}
        }

        function ArrayLike(array, keyWord)
        {
            //正則表達式
            //方法一
            var arr = [];
            var reg = new RegExp(keyWord);
            //_.filter(array, function (obj) {
            //    return obj.CarName.match(reg);
            //});

            _.each(array, function (d) {
                if (d.CarName.match(reg)) {
                    arr.push(d);
                }
            })

            //方法二
            //var reg = new RegExp(keyWord);
            //for (var i = 0; i <  array.length; i++) {
            //    //如果字符串中不包含目標字符會返回-1
            //    //方式一正則
            //    if (array[i].CarName.match(reg)) {
            //        arr.push(array[i]);
            //    }
            //    //方式二字符串匹配
            //    //if (array[i].CarName.indexOf(keyWord) >= 0) {
            //    //    arr.push(array[i]);
            //    //}
            //}
            return arr;
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM