由于项目中用到的这个插件.引来了许多不必要的麻烦.
searchableSelect主要是美化功能.同时带来的问题是不能绑定onchange,还不能动态赋值.今天在网上找了半天也没找到方法.真的很头疼.
首先我需要的功能是点击下拉框时要激活事件,并请求后台去查找数据.然后将值返回回来去重新定义select.
而问题就在于返回值不能实时增加到
searchableSelect 下的div中.捣鼓了半天只想到这样的办法.感觉算是比较简单实现方法..
html:<div class="edit-from-item edit-item-small fl" id="dept"><span>公司部门:</span> <select id="company_dept_id" name="company_dept_id"> </select> </div> js:
$(document).ready(function() { //这里只能写个委托事件去激活事件.因为每次都会要重新生成 $(document).on("click","#company_dept_id+.searchable-select",function(){ findCompanyDupt(); }); });
function findCompanyDupt() { $.ajax({ type: "POST", url: '${pageContext.request.contextPath}/recruit/findCompanyDupt', // data: {USER_IDS:str}, dataType:'json', //beforeSend: validateData, cache: false, success: function(data){ var s = ""; if(data.msg=="200"){ s+='<option disabled="disabled">请选择公司部门</option>'; $.each(data.list, function(i, list){ s+='<option value="'+list.COMPANY_DEPT_ID+' '; if('${recruitPd.COMPANY_DEPT_ID}'==list.COMPANY_DEPT_ID){ s+=' selected' } s+='">'+list.DEPT_NAME+'</option>'; }); $('#company_dept_id').html(s);//将数据插入select中 } //1 执行完毕后去掉之前生成的div $("#company_dept_id + div").remove(); //2 重新生成一个div $('#company_dept_id').searchableSelect({ afterSelectItem: function(){//此方法是点击后激活事件 :关闭下拉框 $('#dept .searchable-select-dropdown').addClass('searchable-select-hide'); }} ); //3 生成的同时打开下拉框 $('#dept .searchable-select-dropdown').removeClass('searchable-select-hide'); // console.log($('#company_dept_id').html()); } }); }最终这样可以解决这个问题.不晓得有没有BUG.欢迎指正.