国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

326 lines
9.6KB

  1. //选择地区的二级分类(非通用调用)
  2. function selNext(oj, v)
  3. {
  4. var newobj = oj.options;
  5. var selv = parseInt(v);
  6. var maxv = parseInt(v) + 500;
  7. while(newobj.length > 0) {
  8. oj.remove(0);
  9. }
  10. clear(oj);
  11. if(selv==0)
  12. {
  13. aOption = document.createElement('OPTION');
  14. aOption.text = '具体地区';
  15. aOption.value = '0';
  16. oj.options.add(aOption);
  17. return;
  18. }
  19. else
  20. {
  21. aOption = document.createElement('OPTION');
  22. aOption.text = '具体地区';
  23. aOption.value = '0';
  24. oj.options.add(aOption);
  25. }
  26. var str = '';
  27. for(i=selv+1; i < maxv; i++)
  28. {
  29. if(!em_nativeplaces[i]) continue;
  30. aOption = document.createElement('OPTION');
  31. aOption.text = em_nativeplaces[i];
  32. aOption.value = i;
  33. oj.options.add(aOption);
  34. }
  35. }
  36. //子类改变事件
  37. function ChangeSon()
  38. {
  39. /*
  40. var emname = this.name.replace('_son', '');
  41. var topSelObj = document.getElementById(emname+'_top');
  42. if(this.options[this.selectedIndex].value==0) {
  43. document.getElementById('hidden_'+emname).value = topSelObj.options[topSelObj.selectedIndex].value;
  44. }
  45. else {
  46. document.getElementById('hidden_'+emname).value = this.options[this.selectedIndex].value;
  47. }
  48. */
  49. // 由于支持3级联动,所以这里需要对自己改变进行重构
  50. var emname = this.name.replace('_son', '');
  51. // alert(emname);
  52. if( document.getElementById(emname+'_sec') )
  53. {
  54. var oj = document.getElementById(emname + '_sec');
  55. }
  56. else
  57. {
  58. var oj = document.createElement('select');
  59. oj.name = emname + '_sec';
  60. oj.id = emname + '_sec';
  61. oj.className = "form-control mt-2";
  62. oj.onchange = ChangeSec;
  63. }
  64. var v = this.options[this.selectedIndex].value;
  65. document.getElementById('hidden_'+emname).value = v;
  66. var newobj = oj.options;
  67. var selarr = eval('em_'+emname+'s');
  68. var selv = parseInt(v);
  69. var maxv = parseInt(v) + 0.5;
  70. // alert(maxv);
  71. i = 0;
  72. while(newobj && newobj.length > 0) oj.remove(0);
  73. clear(oj);
  74. if(selv == 0)
  75. {
  76. aOption = document.createElement('OPTION');
  77. aOption.text = '请选择..';
  78. aOption.value = '0';
  79. oj.options.add(aOption);
  80. return;
  81. }
  82. else
  83. {
  84. aOption = document.createElement('OPTION');
  85. aOption.text = '请选择..';
  86. aOption.value = '0';
  87. oj.options.add(aOption);
  88. }
  89. var str = '';
  90. var j=0;
  91. for(i = selv + 0.001; i < maxv; i = FloatAdd(i, 0.001))
  92. {
  93. if(!selarr[i]) continue;
  94. aOption = document.createElement('OPTION');
  95. aOption.text = selarr[i];
  96. aOption.value = i;
  97. oj.options.add(aOption);
  98. j++;
  99. }
  100. if(j > 0) document.getElementById('span_'+emname+'_sec').appendChild(oj);
  101. else document.getElementById('span_'+emname+'_sec').innerHTML = "";
  102. }
  103. // 改变第三级的事件
  104. function ChangeSec()
  105. {
  106. var emname = this.name.replace('_sec', '');
  107. var topSelObj = document.getElementById(emname+'_top');
  108. if(this.options[this.selectedIndex].value==0) {
  109. document.getElementById('hidden_'+emname).value = topSelObj.options[topSelObj.selectedIndex].value;
  110. }
  111. else {
  112. document.getElementById('hidden_'+emname).value = this.options[this.selectedIndex].value;
  113. }
  114. }
  115. //顶级类改变事件
  116. function selNextSon()
  117. {
  118. var emname = this.name.replace('_top', '');
  119. if( document.getElementById(emname+'_son') )
  120. {
  121. var oj = document.getElementById(emname + '_son');
  122. }
  123. else
  124. {
  125. var oj = document.createElement('select');
  126. oj.name = emname + '_son';
  127. oj.id = emname + '_son';
  128. oj.className = "form-control mt-2";
  129. oj.onchange = ChangeSon;
  130. }
  131. var v = this.options[this.selectedIndex].value;
  132. document.getElementById('hidden_'+emname).value = v;
  133. var newobj = oj.options;
  134. var selarr = eval('em_'+emname+'s');
  135. var selv = parseInt(v);
  136. var maxv = parseInt(v) + 500;
  137. while(newobj && newobj.length > 0) oj.remove(0);
  138. clear(oj);
  139. if(selv==0)
  140. {
  141. aOption = document.createElement('OPTION');
  142. aOption.text = '请选择..';
  143. aOption.value = '0';
  144. oj.options.add(aOption);
  145. return;
  146. }
  147. else
  148. {
  149. aOption = document.createElement('OPTION');
  150. aOption.text = '请选择..';
  151. aOption.value = '0';
  152. oj.options.add(aOption);
  153. }
  154. var str = '';
  155. for(i=selv+1; i < maxv; i++)
  156. {
  157. if(!selarr[i]) continue;
  158. aOption = document.createElement('OPTION');
  159. aOption.text = selarr[i];
  160. aOption.value = i;
  161. oj.options.add(aOption);
  162. }
  163. document.getElementById('span_'+emname+'_son').appendChild(oj);
  164. }
  165. // 根据数组生成多级联动菜单
  166. function MakeTopSelect(emname, selvalue)
  167. {
  168. var selectFormHtml = '';
  169. var aOption = null;
  170. var selObj = document.createElement("select");
  171. selObj.name = emname + '_top';
  172. selObj.id = emname + '_top';
  173. selObj.className = "form-control mt-2";
  174. selObj.onchange = selNextSon;
  175. var selarr = eval('em_'+emname+'s');
  176. // alert(selarr[1002.2]);
  177. var topvalue = 0;
  178. var sonvalue = 0;
  179. var secvalue = 0;
  180. aOption = document.createElement('OPTION');
  181. aOption.text = '请选择..';
  182. aOption.value = 0;
  183. selObj.options.add(aOption);
  184. // alert(selvalue);
  185. if(selvalue % 500 == 0 )
  186. {
  187. topvalue = selvalue;
  188. }
  189. // 如果是小数,则依次取出顶级数值,二级数值以及三级数值
  190. else if(!!(selvalue % 1))
  191. {
  192. secvalue = selvalue;
  193. sonvalue = Math.floor(selvalue);
  194. topvalue = sonvalue - (sonvalue % 500);
  195. // alert(secvalue);
  196. }
  197. else {
  198. sonvalue = selvalue;
  199. topvalue = selvalue - (selvalue % 500);
  200. }
  201. for(i = 500; i <= selarr.length; i += 500)
  202. {
  203. if(!selarr[i]) continue;
  204. aOption = document.createElement('OPTION');
  205. if(i == topvalue) {
  206. aOption = document.createElement('OPTION');
  207. aOption.text = selarr[i];
  208. aOption.value = i;
  209. selObj.options.add(aOption);
  210. aOption.selected = true;
  211. }
  212. else {
  213. aOption = document.createElement('OPTION');
  214. aOption.text = selarr[i];
  215. aOption.value = i;
  216. selObj.options.add(aOption);
  217. }
  218. }
  219. document.getElementById('span_'+emname).appendChild(selObj);
  220. //如果子类存在值,创建子类
  221. //if(sonvalue > 0 || topvalue > 0) {
  222. selObj = document.createElement("select");
  223. selObj.name = emname + '_son';
  224. selObj.id = emname + '_son';
  225. selObj.className = "form-control mt-2";
  226. selObj.onchange = ChangeSon;
  227. aOption = document.createElement('OPTION');
  228. aOption.text = '请选择..';
  229. aOption.value = 0;
  230. selObj.options.add(aOption);
  231. //当大类有值输出子类
  232. if(topvalue > 0)
  233. {
  234. var selv = topvalue;
  235. var maxv = parseInt(topvalue) + 500;
  236. for(i = selv + 1; i < maxv; i++)
  237. {
  238. if(!selarr[i]) continue;
  239. aOption = document.createElement('OPTION');
  240. if(i == sonvalue) {
  241. aOption = document.createElement('OPTION');
  242. aOption.text = selarr[i];
  243. aOption.value = i;
  244. selObj.options.add(aOption);
  245. aOption.selected = true;
  246. }
  247. else {
  248. aOption = document.createElement('OPTION');
  249. aOption.text = selarr[i];
  250. aOption.value = i;
  251. selObj.options.add(aOption);
  252. }
  253. }
  254. }
  255. document.getElementById('span_'+emname+'_son').appendChild(selObj);
  256. // 若存在第三级则创建
  257. if(secvalue > 0)
  258. {
  259. selObj = document.createElement("select");
  260. selObj.name = emname + '_sec';
  261. selObj.id = emname + '_sec';
  262. selObj.onchange = ChangeSec;
  263. aOption = document.createElement('OPTION');
  264. aOption.text = '请选择..';
  265. selObj.className = "form-control mt-2";
  266. aOption.value = 0;
  267. selObj.options.add(aOption);
  268. var selv = sonvalue;
  269. var maxv = parseInt(sonvalue) + 0.5;
  270. // alert(maxv);
  271. i = 0;
  272. for(i = selv + 0.001; i < maxv; i = FloatAdd(i, 0.001))
  273. {
  274. if(!selarr[i]) continue;
  275. aOption = document.createElement('OPTION');
  276. if(i == secvalue) {
  277. aOption = document.createElement('OPTION');
  278. aOption.text = selarr[i];
  279. aOption.value = i;
  280. selObj.options.add(aOption);
  281. aOption.selected = true;
  282. }
  283. else {
  284. aOption = document.createElement('OPTION');
  285. aOption.text = selarr[i];
  286. aOption.value = i;
  287. selObj.options.add(aOption);
  288. }
  289. }
  290. }
  291. document.getElementById('span_'+emname+'_sec').appendChild(selObj);
  292. }
  293. // 两个小数相加进度计算
  294. function FloatAdd(arg1, arg2)
  295. {
  296. var r1,r2,m;
  297. try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
  298. try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
  299. m=Math.pow(10,Math.max(r1,r2))
  300. return (arg1*m+arg2*m)/m
  301. }
  302. //清除旧对象
  303. function clear(o)
  304. {
  305. l=o.length;
  306. for (i = 0; i< l; i++){
  307. o.options[1]=null;
  308. }
  309. }