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

256 lines
8.6KB

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