国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

324 строки
9.4KB

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