案例:點擊編輯,彈出界面后每個欄目都有一個默認的數值,但若其中一個選擇框發生更改,則觸發另一選擇框內的數據發生變動(例如組織機構選擇發生變動,則相對應的組織機構的下屬機構也發生變動)。
解決思路:組織機構函數中,選擇發生變動時,觸發并傳遞數值給下屬機構函數。》 ?組織機構函數正常運行中,觸發并傳遞數值給下屬機構函數。
組織機構函數
function setOrganization(id,paramsor){ var type="organization"; var params = {"token": getStorage("token"), "flag":1}; var fullurl=getOption("gykj_host")+"organization/list"+"?"+getOption("gykj_callbackparam")+"="+getOption("gykj_callbackfunc"); //$('#submenu_info').html(fullurl); $.ajax({url:fullurl,type:'get',dataType:"jsonp",jsonp:getOption("gykj_callbackparam"),jsonpCallback:getOption("gykj_callbackfunc"),async:false,error:function(){alert("列表:"+getOption("connectionErrorMessage"));},success:function(data){if(data.resultCode==getOption("resultcode_success")){ var html='<select class="chosen-select form-control" id="o_id" data-placeholder="選擇一個組織機構...">';for(var item in data.data){//var organization = {"o_id": data.data[item].o_id,"o_name":data.data[item].o_name,"logo":data.data[item].logo,"description": data.data[item].description,"flag":1};//alert(data.data[item].organization);var str=JSON.stringify(data.data[item]);html+="<option value='"+str+"' ";if(data.data[item].o_id!=null&¶msor['organization']!=null&&data.data[item].o_id==paramsor['organization'].o_id){html+=" selected ";}html+=">"+data.data[item].o_name+"</option>";} html+="</select>";$("#organizations").html(html); var oid=paramsor['organization'].o_id;$('#o_id').change(function(){ //若組織機構發生變動 var organizationstr=$('#o_id').val();var obj=JSON.parse(organizationstr);oid=obj.o_id;setmachineGroup(oid,paramsor);//傳遞并觸發變動的組織機構ID給下屬機構 }); }else{alert("錯誤代碼"+data.errorCode+":"+data.message);}var nullid="";setmachineGroup(nullid,paramsor);//遞并觸發未變動的組織機構ID給下屬機構 } }); }
下屬機構函數
function setmachineGroup(oid,paramsor){ var type="machineGroup"; var params = {"token": getStorage("token"), "flag":1}; if(oid==""){//判斷傳遞值odi若為空時,讀取默認的下屬機構數據var fullurl=getOption("gykj_host")+type+"/list"+"?"+getOption("gykj_callbackparam")+"="+getOption("gykj_callbackfunc")+"&token="+getStorage("token"); }else{//否則執行組織機構變動后對應的下屬機構數據var fullurl=getOption("gykj_host")+type+"/list"+"?"+getOption("gykj_callbackparam")+"="+getOption("gykj_callbackfunc")+"&o_id="+oid+"&token="+getStorage("token"); }$.ajax({url:fullurl,type:'get',dataType:"jsonp",jsonp:getOption("gykj_callbackparam"),jsonpCallback:getOption("gykj_callbackfunc"),async:false,error:function(){alert("列表:"+getOption("connectionErrorMessage"));},success:function(data){if(data.resultCode==getOption("resultcode_success")){ var html='<select class="chosen-select form-control" id="mg_id" data-placeholder="選擇一個終端分組..."><option value=""></option>';for(var item in data.data){//var machinegroup = {"mg_id": data.data[item].mg_id,"mg_name":data.data[item].mg_name,"description": data.data[item].description,"flag":1};var machinegroup_str=JSON.stringify(data.data[item]);html+="<option value='"+machinegroup_str+"'";if(data.data[item].mg_id!=null&¶msor['machinegroup']!=null&&data.data[item].mg_id==paramsor['machinegroup'].mg_id){html+=" selected ";}html+=">"+data.data[item].mg_name+"</option>";} html+="</select>";$("#machinegroup").html(html); setSupplier(paramsor); //$('#mg_id').chosen({allow_single_deselect:true}); }else{alert("錯誤代碼"+data.errorCode+":"+data.message);//$("#machinegrouptype").html(""); }} }); }
?