来源于 https://blog.csdn.net/torpidcat/article/details/96301937
1 <div class="box-tools pull-left"> 2 <div class="btn-group"> 3 <div class="col-sm-10" id="selectItem"> 4 <select id="itemSelect" name="itemSelect" οnchange="selectedItem()" class="selectpicker" title="全部" data-live-search="true"> 5 <!--<option value="y" selected>猴子偷桃</option>--> 6 <!--<option value="m">八戒吃喝</option>--> 7 </select> 8 </div> 9 </div> 10 </div>
1 <script type="text/javascript"> 2 var itemDataUrl = "http://....../returnJsonData";//选项返回键值对集合 json封装 3 4 //绑定bootstrap-select事件 5 $('#itemSelect').on('shown.bs.select',function(e){ 6 //console.error("当前元素:"+$('#itemSelect').html()); 7 //console.error("父节点:"+$('#itemSelect').parent().html()); 8 //console.error("父节点下找到搜索文本框所在div:"+$('#itemSelect').parent().find(".bs-searchbox").html()); 9 //console.error("根据类名锁定文本框:"+$('#itemSelect').parent().find(".bs-searchbox").find("input")); 10 $('#itemSelect').parent().find(".bs-searchbox").find("input").attr('id',"searchParam");//为input增加id属性 11 //为input绑定键盘离开事件,触发搜索 12 $('#searchParam').keyup(function(){ 13 var searchParam = $('#searchParam').val().trim(); 14 var data = { 15 'searchParam':searchParam,"shopId":"" 16 } 17 itemData($('#itemSelect'),data); 18 }) 19 }); 20 21 //商品 22 function itemData($obj,data) { 23 var html = ''; 24 $.post(itemDataUrl, data, function (res) { 25 if (res.code == 200) { 26 jQuery.each(res.result, function(i, val) { 27 html += '<option value="' + val.mapKey + '" >' + val.mapValue+ '</option>'; 28 }); 29 $obj.html(html); 30 //必须加,刷新select 31 $obj.selectpicker('refresh'); 32 } else { 33 layer.msg(res.msg, {time: 2000}); 34 } 35 }, 'json'); 36 } 37 38 </script>
这里的js动态加载数据方式参考
https://blog.csdn.net/m0_37355951/article/details/78287278#commentsedit
https://blog.csdn.net/m0_37355951/article/details/78292910
https://blog.csdn.net/w309827333/article/details/82424944
https://blog.csdn.net/wg526125649/article/details/84622527
参考的文章里,一些代码不适用我的项目,所以适当修改下,大概思路是一样的,确定当前select所在节点,找到相邻的bootstrap生成的输入框所在节点,给输入框id赋值,实时监控输入框文本,或者用一个搜索按钮,获取后台数据。
浏览器审查元素,查看文本框所在节点,发现在select隔壁的隔壁的下边,那么js里可以使用jquery的方式找到它,给它设置id,便于后边监听它,并根据输入内容动态加载选项
$('#itemSelect').parent().find(".bs-searchbox").find("input")
打印日志
后台取数据