|
@@ -365,35 +365,35 @@ function listDistrict(cityId,districtName){
|
|
|
this.$element = ele,
|
|
|
this.ulcInfo = {
|
|
|
urlPrefix : "",
|
|
|
- ulcLevel : [],
|
|
|
- execution:{
|
|
|
- // executionType : {
|
|
|
- // A:initUlcLevel
|
|
|
- // } ,
|
|
|
- executionFun : []
|
|
|
- }
|
|
|
+ ulcLevel : [],
|
|
|
+ judgeNameShield : []
|
|
|
},
|
|
|
this.options = $.extend({}, this.ulcInfo, opt) //opt并入ulcInfo集合组成新的集合,然后赋值给 options ,所以一切调用options
|
|
|
}
|
|
|
//定义Address的方法
|
|
|
UnlimitedLevelContact.prototype = {
|
|
|
init: function() {
|
|
|
+ var ulc = this;
|
|
|
this.initUlcLevel();
|
|
|
if(this.options.ulcLevel.length > 0){
|
|
|
- this.initUlc(0,"",null);
|
|
|
+ this.initUlcHtml(0,"",ulc.options.ulcLevel[0].ulcId);
|
|
|
}
|
|
|
return this;
|
|
|
},
|
|
|
initUlcLevel : function(){
|
|
|
$(this.options.ulcLevel).each(function (index){
|
|
|
- //是否选中数据 1:选中 2:未选中
|
|
|
+ //是否选中数据 1:选中 2:未选中 -- 初始化出来,是否需要选中第一个
|
|
|
this.isSelected = 1;
|
|
|
|
|
|
+ // this.isSelected attr("ulcId");
|
|
|
+
|
|
|
/*初始化层次结构*/
|
|
|
$(this.ulcNode).attr("ulclevel",index);
|
|
|
})
|
|
|
},
|
|
|
- initUlc : function(level,id,thisId){
|
|
|
+ initUlcHtml : function(level,id,thisId){
|
|
|
+ level = Number(level);
|
|
|
+ $.ajaxSettings.async = false;
|
|
|
//初始化联动
|
|
|
var ulc = this;
|
|
|
var node = ulc.options.ulcLevel[level];
|
|
@@ -414,23 +414,33 @@ function listDistrict(cityId,districtName){
|
|
|
var data = node.parseData(this);
|
|
|
$(node.ulcNode).append("<option value='"+ data.id +"'>"+ data.val +"</option>");
|
|
|
})
|
|
|
- if(thisId != null){
|
|
|
+ if(thisId != null && typeof thisId != "undefined" && thisId != ""){
|
|
|
//赋值本下拉框的id
|
|
|
$(node.ulcNode).val(thisId);
|
|
|
- }
|
|
|
- if(res.data.length > 0){
|
|
|
+ node.ulcId = thisId;
|
|
|
+ }else if(res.data.length > 0){
|
|
|
node.ulcId = node.parseData(res.data[0]).id;
|
|
|
- if(ulc.options.ulcLevel.length-1 > level && node.isSelected == 1){
|
|
|
- $(node.ulcNode).change(function (){
|
|
|
- ulc.initUlc(level+1,$(node.ulcNode).val());
|
|
|
- })
|
|
|
- ulc.initUlc(level+1,node.ulcId);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(ulc.options.ulcLevel.length-1 > level && node.isSelected == 1){
|
|
|
+ $(node.ulcNode).change(function (){
|
|
|
+ /*点击事件*/
|
|
|
+ ulc.initUlcHtml(level+1,$(node.ulcNode).val(),ulc.options.ulcLevel[level+1]);
|
|
|
+ })
|
|
|
+ var ulcId = ulc.options.ulcLevel[level+1].ulcId,ulcName=ulc.options.ulcLevel[level+1].ulcName;
|
|
|
+ if(ulcName != null && typeof ulcName != "undefined" && ulcName != ""){
|
|
|
+ ulcId = ulc.getUlcIdByName(ulc.options.ulcLevel[level+1]);
|
|
|
}
|
|
|
+ if(ulcId != null && typeof ulcId != "undefined" && ulcId != ""){
|
|
|
+ ulcId = ulc.options.ulcLevel[level+1].ulcId;
|
|
|
+ }
|
|
|
+ ulc.initUlcHtml(level+1,node.ulcId,ulcId);
|
|
|
}
|
|
|
}else{
|
|
|
console.log(res.msg);
|
|
|
}
|
|
|
});
|
|
|
+ $.ajaxSettings.async = true;
|
|
|
},
|
|
|
setUlcById: function(){
|
|
|
/**
|
|
@@ -443,11 +453,9 @@ function listDistrict(cityId,districtName){
|
|
|
level = arguments[0];
|
|
|
}else{
|
|
|
//节点,传入节点,将进行取值ulclevel
|
|
|
- level = $("#addressProvince").prop("ulclevel");
|
|
|
- //https://www.cnblogs.com/zhuchenglin/p/7651990.html 异步取不到值
|
|
|
- //https://blog.csdn.net/u013063153/article/details/52457307 异步取不到值
|
|
|
+ level = arguments[0].attr("ulclevel");
|
|
|
}
|
|
|
- if(level = -1){
|
|
|
+ if(level == -1){
|
|
|
console.log("setUlcId error!!!");
|
|
|
return ulc;
|
|
|
}
|
|
@@ -455,11 +463,38 @@ function listDistrict(cityId,districtName){
|
|
|
if(level != 0){
|
|
|
upperLevelId = ulc.options.ulcLevel[level-1].ulcId;
|
|
|
}
|
|
|
- ulc.initUlc(level,upperLevelId,arguments[1]);
|
|
|
+ ulc.initUlcHtml(level,upperLevelId,arguments[1]);
|
|
|
return this;
|
|
|
},
|
|
|
- execute:function(){
|
|
|
-
|
|
|
+ getUlcIdByName:function(node,name){
|
|
|
+ /**
|
|
|
+ * 形参 1:level级别
|
|
|
+ * 形参 2:名称,非必填,为空的时候,使用节点获取名称
|
|
|
+ */
|
|
|
+ var $node = node.ulcNode;
|
|
|
+ if(name == null){
|
|
|
+ name = $node.attr("ulcName");
|
|
|
+ }
|
|
|
+ var ulc = this;
|
|
|
+ for (var i=0;i<ulc.options.judgeNameShield.length;i++){
|
|
|
+ name = name.replace(ulc.options.judgeNameShield[i],"");
|
|
|
+ }
|
|
|
+ var max = 0,maxValue="";
|
|
|
+ $node.find("option").each(function(){
|
|
|
+ var number=0,attrName = "";
|
|
|
+ if($(this).text().indexOf(name) > -1){
|
|
|
+ number ++
|
|
|
+ if($(this).text() == name){
|
|
|
+ number ++
|
|
|
+ }
|
|
|
+ attrName = $(this).val();
|
|
|
+ }
|
|
|
+ if(max < number){
|
|
|
+ max = number;
|
|
|
+ maxValue = attrName;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return maxValue;
|
|
|
}
|
|
|
}
|
|
|
// initAddress 调用
|
|
@@ -477,6 +512,7 @@ function initAddress(addressNode){
|
|
|
var $country = $(".address_info").find(".init_country");
|
|
|
var ulc = $(".address_info").initUlc({
|
|
|
urlPrefix: root_path,
|
|
|
+ judgeNameShield : ["省","市","县","乡","镇","市","自治区"],
|
|
|
ulcLevel : [
|
|
|
{
|
|
|
ulcNode: $provice, //节点
|