js对html中下拉框的控制,DynamicsCRM2015通过JS控制下拉框实现国家省市级联

前言:最近颇为烦恼的一个问题,特地记录下来以备参考。

方法一:

注:

通过 js 操作crm里类型为选项组的栏位方法:

1. 清除选项组:xrm.page.getcontrol("controlid").clearoptions();

2. 添加选项组选项:xrm.page.getcontrol("controlid").addoption({value:0, text:"显示的值"});

备注(重要):通过 js 添加的选项组项的值(value)必须先在栏位对应的选项组中有对应的值,不然即使绑定了,选中也无法显示在页面上

操作页面选项时最终显示在页面上的值是“栏位对应的选项的值”;

意思是假设通过js绑定了value=0,text="js绑定"选项,而栏位中添加了个值为0的,标签为“栏位绑定”的选项;

当操作页面选中“js绑定”时,crm会自动查找预先绑定过的值,如果则无法显示,如果找到会显示对应的标签,如显示“栏位绑定”。

因为上面的问题,所以如果有别的更好方法,还是不建议用这个方法(听说lookup方法可以实现级联,再研究).

不多说,具体实现如下:

--------------------------------------------- 分割线 ---------------------------------------------

crm js代码:

//获取select元素 var countryid = "new_testcountry"; var provinceid = "new_state"; var cityid = "new_test_city"; var countryobj = xrm.page.getcontrol(countryid ); var provinceobj = xrm.page.getcontrol(provinceid); var cityobj = xrm.page.getcontrol(cityid); //初始化地区下拉菜单 function initialize() { //清空已绑定值 countryobj.clearoptions(); var countrystr = "australia,belgium,cambodia,canada,switzerland,china,france,germany,hong kong,india,indonesia,ireland,israel,italy,japan,korea,kuwait,lebanon,luxembourg,macao,malaysia,netherlands,new zealand,philippines,sweden,singapore,south africa,sweden,taiwan,thailand,united kiongdom,usa,vietnam"; var countryarray = countrystr.split(','); for(var i=0; i= 100) i = i+1; val = i; break; } countryobj.addoption({value:val, text:countryarray[i]}); } provincedel(); //绑定onchange事件 xrm.page.getattribute(countryid).addonchange(function(){ countryselchange(); }) xrm.page.getattribute(provinceid).addonchange(function(){ provinceselchange(); }) setoptions(); } //加载下拉框设置的值(更新) function setoptions() { var countryentity = xrm.page.data.entity.attributes.get(countryid); var provinceentity = xrm.page.data.entity.attributes.get(provinceid); var cityentity = xrm.page.data.entity.attributes.get(cityid); countryentity.setvalue(countryentity._attribute["$v_1"]); provinceentity.setvalue(provinceentity._attribute["$v_1"]); cityentity.setvalue(cityentity._attribute["$v_1"]); } //下拉列表改变事件 function countryselchange() { provincedel(); provinceadd(); } //下拉列表改变事件 function provinceselchange() { citydel(); cityadd(); } //清空 function provincedel() { provinceobj.clearoptions(); citydel(); } //清空 function citydel() { cityobj.clearoptions(); } //添加省 function provinceadd() { var provincelist = []; provincelist[0] = [100, "china", "安徽省,澳门,北京市,重庆市,福建省,甘肃省,广东省,广西省,贵州省,海南省,河北省,黑龙江省,河南省,湖北省,湖南省,江苏省,江西省,吉林省,辽宁省,内蒙古自治区,宁夏回族自治区,青海省,山东省,上海市,陕西省,山西省,四川省,台湾省,天津市,香港,新疆维吾尔自治区,西藏自治区,云南省,浙江省"]; for(var i=0; i打开对应的表单,找到最上方的 ‘表单属性’ ,在事件里添加表单程式库,将上述代码放入你的js文件中,

然后在下方的事件处理常式中的onload事件中添加程式库,调用上诉initialize 函数;

在完成表单后在onsave事件中调用上述saveform函数。

栏位中添加三个栏位,名称分别是上方的 new_country, new_province, new_city;皆为选项组类型,

对应的选项组值需要和js中对应,比如new_country 有标签为“china”,值为100;new_province 有标签为“安徽省”,值为100;标签为“福建省”,值为104……

========================== 方法分割线 =============================

方法二:

思考中……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现省市级三级联下拉框,需要以下步骤: 1. 在HTML创建3个下拉框,分别用于显示省、市、区县。 2. 创建一个JavaScript数组,用于存储省市区县数据。 3. 给省下拉框绑定change事件,当省下拉框的值发生改变时,根据选的省份动态生成对应的市下拉框选项。 4. 给市下拉框绑定change事件,当市下拉框的值发生改变时,根据选的市动态生成对应的区县下拉框选项。 5. 在JavaScript编写函数,根据选省市区县,获取对应的数据并填充到对应的下拉框。 以下是示例代码: HTML部分: ``` <select id="province"></select> <select id="city"></select> <select id="district"></select> ``` JavaScript部分: ``` // 省市区县数据 var data = { "北京市": { "市辖区": ["东城区", "西城区", "崇文区", "宣武区", "朝阳区", "海淀区", "丰台区", "石景山区", "房山区", "通州区", "顺义区", "昌平区", "大兴区", "怀柔区", "平谷区"], "县": ["密云县", "延庆县"] }, "浙江省": { "杭州市": ["上城区", "下城区", "江干区", "拱墅区", "西湖区", "滨江区", "萧山区", "余杭区", "桐庐县", "淳安县", "建德市", "富阳市", "临安市"], "宁波市": ["海曙区", "江东区", "江北区", "北仑区", "镇海区", "鄞州区", "象山县", "宁海县", "余姚市", "慈溪市", "奉化市"], "温州市": ["鹿城区", "龙湾区", "瓯海区", "洞头县", "永嘉县", "平阳县", "苍南县", "文成县", "泰顺县", "瑞安市", "乐清市"], "嘉兴市": ["南湖区", "秀洲区", "嘉善县", "海盐县", "海宁市", "平湖市", "桐乡市"], "湖州市": ["吴兴区", "南浔区", "德清县", "长兴县", "安吉县"], "绍兴市": ["越城区", "绍兴县", "新昌县", "诸暨市", "上虞市", "嵊州市"], "金华市": ["婺城区", "金东区", "武义县", "浦江县", "磐安县", "兰溪市", "义乌市", "东阳市", "永康市"], "衢州市": ["柯城区", "衢江区", "常山县", "开化县", "龙游县", "江山市"], "舟山市": ["定海区", "普陀区", "岱山县", "嵊泗县"], "台州市": ["椒江区", "黄岩区", "路桥区", "玉环县", "三门县", "天台县", "仙居县", "温岭市", "临海市"], "丽水市": ["莲都区", "青田县", "缙云县", "遂昌县", "松阳县", "云和县", "庆元县", "景宁畲族自治县", "龙泉市"] } }; // 初始化省下拉框选项 function initProvince() { var provinceSelect = document.getElementById("province"); for (var province in data) { var option = document.createElement("option"); option.value = province; option.text = province; provinceSelect.add(option); } // 触发省下拉框change事件 provinceSelect.onchange(); } // 根据省份生成市下拉框选项 function generateCity() { var provinceSelect = document.getElementById("province"); var citySelect = document.getElementById("city"); var province = provinceSelect.value; citySelect.innerHTML = ""; // 清空市下拉框选项 if (province in data) { var cities = data[province]; for (var city in cities) { var option = document.createElement("option"); option.value = city; option.text = city; citySelect.add(option); } } // 触发市下拉框change事件 citySelect.onchange(); } // 根据市生成区县下拉框选项 function generateDistrict() { var provinceSelect = document.getElementById("province"); var citySelect = document.getElementById("city"); var districtSelect = document.getElementById("district"); var province = provinceSelect.value; var city = citySelect.value; districtSelect.innerHTML = ""; // 清空区县下拉框选项 if (province in data && city in data[province]) { var districts = data[province][city]; for (var i = 0; i < districts.length; i++) { var option = document.createElement("option"); option.value = districts[i]; option.text = districts[i]; districtSelect.add(option); } } } // 绑定省下拉框change事件 document.getElementById("province").onchange = function() { generateCity(); }; // 绑定市下拉框change事件 document.getElementById("city").onchange = function() { generateDistrict(); }; // 初始化省下拉框选项 initProvince(); ``` 这个例子,我们使用JavaScript数组存储省市区县数据,并使用三个下拉框来展示省市区县信息。当省下拉框的值发生改变时,会自动根据选的省份生成对应的市下拉框选项;当市下拉框的值发生改变时,会自动根据选的市生成对应的区县下拉框选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值