//# sourceURL=select-util.js /** * 根据输入的值动态查询select的数数据源 * @param id select元素的ID * @param url 动态请求地址 */ function dynamicSelect(id, url) { var inputObj = $("#" + id).parent().find("div.bs-searchbox").find("input"); //中文会导致查询混乱 $(inputObj).on('compositionstart', function () { $(inputObj).attr("isNeedPrevent", true); }); $(inputObj).on('compositionend', function () { $(inputObj).attr("isNeedPrevent", false); }); $(inputObj).keyup(function () { var isNeedPrevent = $(inputObj).attr("isNeedPrevent"); if (isNeedPrevent == "true") { return; } debounce(dynamicSelectImmediate(inputObj, url, id), 300, true) }); } /** * 根据输入的值动态查询select的数数据源 不防抖 * @param inputObj * @param url * @param id */ function dynamicSelectImmediate(inputObj, url, id) { //键入的值 var inputValue = $(inputObj).val(); //判定键入的值不为空,才调用ajax if (inputValue != '') { $.ajax({ type: 'GET', url: url + inputValue, dataType: "Json", success: function (res) { if (res == '401' || res == 401) { window.location.href = '/thmz/login/view' return; } if (res.code == 0) { $("#" + id).empty(); $("#" + id).selectpicker('refresh'); var selectedCodes = $("#" + id).attr("selectedCodes"); var selectedTexts = $("#" + id).attr("selectedTexts"); var selectedCodesArr=null; var selectedTextsArr = null; if (selectedCodes != null) { selectedCodesArr = selectedCodes.split(","); selectedTextsArr = selectedTexts.split(","); if (selectedCodesArr != null && selectedCodesArr.length > 0 && selectedTextsArr != null && selectedTextsArr.length > 0) { for (var i = 0; i < selectedCodesArr.length; i++) { if(selectedCodesArr[i]==null || selectedCodesArr[i]==""){ continue; } var html = ''; $("#" + id).append(html); } } } res.data.forEach(function (item, index) { if(!isInArray(item.code,selectedCodesArr)){ var html = ''; $("#" + id).append(html); } }); $("#" + id).selectpicker('refresh'); if(selectedCodesArr!=null && selectedCodesArr.length>0){ $("#" + id).selectpicker('val', selectedCodesArr); $("#" + id).selectpicker('refresh'); } $("#" + id).next().next().find("li").each(function (index, liObject) { $(liObject).on("click", function (t) { selectedOption(id,index, liObject); }); }); } else { errorMesage(res); } } }) } else { $("#" + id).empty(); $("#" + id).selectpicker('refresh'); var selectedCodes = $("#" + id).attr("selectedCodes"); var selectedTexts = $("#" + id).attr("selectedTexts"); if (selectedCodes != null) { var selectedCodesArr = selectedCodes.split(","); var selectedTextsArr = selectedTexts.split(","); if (selectedCodesArr != null && selectedCodesArr.length > 0 && selectedTextsArr != null && selectedTextsArr.length > 0) { for (var i = 0; i < selectedCodesArr.length; i++) { if(selectedCodesArr[i]==null || selectedCodesArr[i]==""){ continue; } var html = ''; $("#" + id).append(html); } $("#" + id).selectpicker('refresh'); $("#" + id).selectpicker('val', selectedCodesArr); $("#" + id).selectpicker('refresh'); } } } } /** * 下拉选内容改变事件 * @param id */ function selectedOption(id,index, liObject) { var options = $("#" + id).children(); var selectedCode = ""; var selectedText = ""; if (options != null && options.length > 0) { selectedCode = $(options[index]).attr("value"); selectedText = $(options[index]).text(); } //上次保存的数据 var selectedCodesOri = $("#" + id).attr("selectedCodes"); var selectedTextsOri = $("#" + id).attr("selectedTexts"); var hasSelected = $(liObject).hasClass("selected"); if (!hasSelected) { if (selectedCodesOri != null && selectedTextsOri != null) { selectedCodesOri=selectedCodesOri+","+selectedCode; selectedTextsOri=selectedTextsOri+","+selectedText; }else { selectedCodesOri=selectedCode; selectedTextsOri=selectedText; } } else { selectedCodesOri=selectedCodesOri.replace(selectedCode,""); selectedTextsOri=selectedTextsOri.replace(selectedText,""); } selectedCodesOri=selectedCodesOri.replace(",,",","); selectedTextsOri=selectedTextsOri.replace(",,",","); $("#" + id).attr("selectedCodes", selectedCodesOri); $("#" + id).attr("selectedTexts", selectedTextsOri); }