国内流行的内容管理系统(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.

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