123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- //# 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 = '<option value="' + selectedCodesArr[i] + '">' + selectedTextsArr[i] + '</option>';
- $("#" + id).append(html);
- }
- }
- }
- res.data.forEach(function (item, index) {
- if(!isInArray(item.code,selectedCodesArr)){
- var html = '<option value="' + item.code + '">' + item.name + '</option>';
- $("#" + 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 = '<option value="' + selectedCodesArr[i] + '">' + selectedTextsArr[i] + '</option>';
- $("#" + 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);
- }
|