//# 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);
}