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

309 lines
11KB

  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) {
  76. document.getElementById('span_' + emname + '_sec').appendChild(oj);
  77. document.getElementById('span_' + emname + '_sec').style.display = "initial"
  78. } else {
  79. document.getElementById('span_' + emname + '_sec').innerHTML = "";
  80. }
  81. }
  82. //改变第三级的事件
  83. function ChangeSec() {
  84. var emname = this.name.replace('_sec', '');
  85. var topSelObj = document.getElementById(emname + '_top');
  86. if (this.options[this.selectedIndex].value == 0) {
  87. document.getElementById('hidden_' + emname).value = topSelObj.options[topSelObj.selectedIndex].value;
  88. } else {
  89. document.getElementById('hidden_' + emname).value = this.options[this.selectedIndex].value;
  90. }
  91. }
  92. //顶级类改变事件
  93. function selNextSon() {
  94. var emname = this.name.replace('_top', '');
  95. if (document.getElementById(emname + '_son')) {
  96. var oj = document.getElementById(emname + '_son');
  97. } else {
  98. var oj = document.createElement('select');
  99. oj.name = emname + '_son';
  100. oj.id = emname + '_son';
  101. oj.className = "form-control admin-input-sm mr-2";
  102. oj.onchange = ChangeSon;
  103. }
  104. var v = this.options[this.selectedIndex].value;
  105. document.getElementById('hidden_' + emname).value = v;
  106. if (v < 500) {
  107. return
  108. }
  109. var newobj = oj.options;
  110. var selarr = eval('em_' + emname + 's');
  111. var selv = parseInt(v);
  112. var maxv = parseInt(v) + 500;
  113. while (newobj && newobj.length > 0) oj.remove(0);
  114. clear(oj);
  115. if (selv == 0) {
  116. aOption = document.createElement('OPTION');
  117. aOption.text = '请选择..';
  118. aOption.value = '0';
  119. oj.options.add(aOption);
  120. return;
  121. } else {
  122. aOption = document.createElement('OPTION');
  123. aOption.text = '请选择..';
  124. aOption.value = '0';
  125. oj.options.add(aOption);
  126. }
  127. var str = '';
  128. var count = 0;
  129. for (i = selv + 1; i < maxv; i++) {
  130. if (!selarr[i]) continue;
  131. aOption = document.createElement('OPTION');
  132. aOption.text = selarr[i];
  133. aOption.value = i;
  134. oj.options.add(aOption);
  135. count = count + 1;
  136. }
  137. if (count > 0) {
  138. document.getElementById('span_' + emname + '_son').style.display = "initial"
  139. document.getElementById('span_' + emname + '_son').appendChild(oj);
  140. } else {
  141. document.getElementById('span_' + emname + '_son').style.display = "none"
  142. }
  143. }
  144. //根据数组生成多级联动菜单
  145. function MakeTopSelect(emname, selvalue) {
  146. var selectFormHtml = '';
  147. var aOption = null;
  148. var selObj = document.createElement("select");
  149. selObj.name = emname + '_top';
  150. selObj.id = emname + '_top';
  151. selObj.className = "form-control admin-input-sm mr-2";
  152. selObj.onchange = selNextSon;
  153. var selarr = eval('em_' + emname + 's');
  154. var topvalue = 0;
  155. var sonvalue = 0;
  156. var secvalue = 0;
  157. aOption = document.createElement('OPTION');
  158. aOption.text = '请选择..';
  159. aOption.value = 0;
  160. selObj.options.add(aOption);
  161. var fkey = Object.keys(selarr)[0];
  162. if (fkey >= 500) {
  163. if (selvalue % 500 == 0) {
  164. topvalue = selvalue;
  165. }
  166. //如果是小数,则依次取出顶级数值,二级数值以及三级数值
  167. else if (!!(selvalue % 1)) {
  168. secvalue = selvalue;
  169. sonvalue = Math.floor(selvalue);
  170. topvalue = sonvalue - (sonvalue % 500);
  171. //alert(secvalue);
  172. } else {
  173. sonvalue = selvalue;
  174. topvalue = selvalue - (selvalue % 500);
  175. }
  176. for (i = 500; i <= selarr.length; i += 500) {
  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 admin-input-sm mr-2";
  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. var selv = topvalue;
  206. var maxv = parseInt(topvalue) + 500;
  207. var count = 0;
  208. for (i = selv + 1; i < maxv; i++) {
  209. if (!selarr[i]) continue;
  210. aOption = document.createElement('OPTION');
  211. if (i == sonvalue) {
  212. aOption = document.createElement('OPTION');
  213. aOption.text = selarr[i];
  214. aOption.value = i;
  215. selObj.options.add(aOption);
  216. aOption.selected = true;
  217. } else {
  218. aOption = document.createElement('OPTION');
  219. aOption.text = selarr[i];
  220. aOption.value = i;
  221. selObj.options.add(aOption);
  222. }
  223. count = count + 1;
  224. }
  225. }
  226. if (count > 0) {
  227. document.getElementById('span_' + emname + '_son').style.display = "initial";
  228. document.getElementById('span_' + emname + '_son').appendChild(selObj);
  229. } else {
  230. document.getElementById('span_' + emname + '_son').style.display = "none";
  231. }
  232. //若存在第三级则创建
  233. if (secvalue > 0) {
  234. selObj = document.createElement("select");
  235. selObj.name = emname + '_sec';
  236. selObj.id = emname + '_sec';
  237. selObj.onchange = ChangeSec;
  238. aOption = document.createElement('OPTION');
  239. aOption.text = '请选择..';
  240. selObj.className = "form-control admin-input-sm mr-2";
  241. aOption.value = 0;
  242. selObj.options.add(aOption);
  243. var selv = sonvalue;
  244. var maxv = parseInt(sonvalue) + 0.5;
  245. i = 0;
  246. var count = 0;
  247. for (i = selv + 0.001; i < maxv; i = FloatAdd(i, 0.001)) {
  248. if (!selarr[i]) continue;
  249. aOption = document.createElement('OPTION');
  250. if (i == secvalue) {
  251. aOption = document.createElement('OPTION');
  252. aOption.text = selarr[i];
  253. aOption.value = i;
  254. selObj.options.add(aOption);
  255. aOption.selected = true;
  256. } else {
  257. aOption = document.createElement('OPTION');
  258. aOption.text = selarr[i];
  259. aOption.value = i;
  260. selObj.options.add(aOption);
  261. }
  262. count = count + 1;
  263. }
  264. }
  265. if (count > 0) {
  266. document.getElementById('span_' + emname + '_sec').style.display = "initial";
  267. document.getElementById('span_' + emname + '_sec').appendChild(selObj);
  268. } else {
  269. document.getElementById('span_' + emname + '_sec').style.display = "none";
  270. }
  271. } else {
  272. for (i = 0; i <= selarr.length; i += 1) {
  273. if (!selarr[i]) continue;
  274. aOption = document.createElement('OPTION');
  275. if (i == selvalue) {
  276. aOption = document.createElement('OPTION');
  277. aOption.text = selarr[i];
  278. aOption.value = i;
  279. selObj.options.add(aOption);
  280. aOption.selected = true;
  281. } else {
  282. aOption = document.createElement('OPTION');
  283. aOption.text = selarr[i];
  284. aOption.value = i;
  285. selObj.options.add(aOption);
  286. }
  287. }
  288. document.getElementById('span_' + emname).appendChild(selObj);
  289. }
  290. }
  291. //两个小数相加进度计算
  292. function FloatAdd(arg1, arg2) {
  293. var r1, r2, m;
  294. try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
  295. try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
  296. m = Math.pow(10, Math.max(r1, r2))
  297. return (arg1 * m + arg2 * m) / m
  298. }
  299. //清除旧对象
  300. function clear(o) {
  301. l = o.length;
  302. for (i = 0; i < l; i++) {
  303. o.options[1] = null;
  304. }
  305. }