//选择地区的二级分类 function selNext(oj, v) { var newobj = oj.options; var selv = parseInt(v); var maxv = parseInt(v) + 500; while (newobj.length > 0) { oj.remove(0); } clear(oj); if (selv == 0) { aOption = document.createElement('OPTION'); aOption.text = '具体地区'; aOption.value = '0'; oj.options.add(aOption); return; } else { aOption = document.createElement('OPTION'); aOption.text = '具体地区'; aOption.value = '0'; oj.options.add(aOption); } var str = ''; for (i = selv + 1; i < maxv; i++) { if (!em_nativeplaces[i]) continue; aOption = document.createElement('OPTION'); aOption.text = em_nativeplaces[i]; aOption.value = i; oj.options.add(aOption); } } //子类改变事件 function ChangeSon() { //由于支持3级联动,所以这里需要对自己改变进行重构 var emname = this.name.replace('_son', ''); if (document.getElementById(emname + '_sec')) { var oj = document.getElementById(emname + '_sec'); } else { var oj = document.createElement('select'); oj.name = emname + '_sec'; oj.id = emname + '_sec'; oj.className = "form-control admin-input-sm mr-2"; oj.onchange = ChangeSec; } var v = this.options[this.selectedIndex].value; document.getElementById('hidden_' + emname).value = v; var newobj = oj.options; var selarr = eval('em_' + emname + 's'); var selv = parseInt(v); var maxv = parseInt(v) + 0.5; i = 0; while (newobj && newobj.length > 0) oj.remove(0); clear(oj); if (selv == 0) { aOption = document.createElement('OPTION'); aOption.text = '请选择'; aOption.value = '0'; oj.options.add(aOption); return; } else { aOption = document.createElement('OPTION'); aOption.text = '请选择'; aOption.value = '0'; oj.options.add(aOption); } var str = ''; var j = 0; for (i = selv + 0.001; i < maxv; i = FloatAdd(i, 0.001)) { if (!selarr[i]) continue; aOption = document.createElement('OPTION'); aOption.text = selarr[i]; aOption.value = i; oj.options.add(aOption); j++; } if (j > 0) { document.getElementById('span_' + emname + '_sec').appendChild(oj); document.getElementById('span_' + emname + '_sec').style.display = "initial"; } else { document.getElementById('span_' + emname + '_sec').innerHTML = ''; } } //改变第三级的事件 function ChangeSec() { var emname = this.name.replace('_sec', ''); var topSelObj = document.getElementById(emname + '_top'); if (this.options[this.selectedIndex].value == 0) { document.getElementById('hidden_' + emname).value = topSelObj.options[topSelObj.selectedIndex].value; } else { document.getElementById('hidden_' + emname).value = this.options[this.selectedIndex].value; } } //顶级类改变事件 function selNextSon() { var emname = this.name.replace('_top', ''); if (document.getElementById(emname + '_son')) { var oj = document.getElementById(emname + '_son'); } else { var oj = document.createElement('select'); oj.name = emname + '_son'; oj.id = emname + '_son'; oj.className = "form-control admin-input-sm mr-2"; oj.onchange = ChangeSon; } var v = this.options[this.selectedIndex].value; document.getElementById('hidden_' + emname).value = v; if (v < 500) { return } var newobj = oj.options; var selarr = eval('em_' + emname + 's'); var selv = parseInt(v); var maxv = parseInt(v) + 500; while (newobj && newobj.length > 0) oj.remove(0); clear(oj); if (selv == 0) { aOption = document.createElement('OPTION'); aOption.text = '请选择'; aOption.value = '0'; oj.options.add(aOption); return; } else { aOption = document.createElement('OPTION'); aOption.text = '请选择'; aOption.value = '0'; oj.options.add(aOption); } var str = ''; var count = 0; for (i = selv + 1; i < maxv; i++) { if (!selarr[i]) continue; aOption = document.createElement('OPTION'); aOption.text = selarr[i]; aOption.value = i; oj.options.add(aOption); count = count + 1; } if (count > 0) { document.getElementById('span_' + emname + '_son').style.display = "initial"; document.getElementById('span_' + emname + '_son').appendChild(oj); } else { document.getElementById('span_' + emname + '_son').style.display = "none"; } } //根据数组生成多级联动菜单 function MakeTopSelect(emname, selvalue) { var selectFormHtml = ''; var aOption = null; var selObj = document.createElement("select"); selObj.name = emname + '_top'; selObj.id = emname + '_top'; selObj.className = "form-control admin-input-sm mr-2"; selObj.onchange = selNextSon; var selarr = eval('em_' + emname + 's'); var topvalue = 0; var sonvalue = 0; var secvalue = 0; aOption = document.createElement('OPTION'); aOption.text = '请选择'; aOption.value = 0; selObj.options.add(aOption); var fkey = Object.keys(selarr)[0]; if (fkey >= 500) { if (selvalue % 500 == 0) { topvalue = selvalue; } //如果是小数,则依次取出顶级数值,二级数值以及三级数值 else if (!!(selvalue % 1)) { secvalue = selvalue; sonvalue = Math.floor(selvalue); topvalue = sonvalue - (sonvalue % 500); //alert(secvalue); } else { sonvalue = selvalue; topvalue = selvalue - (selvalue % 500); } for (i = 500; i <= selarr.length; i += 500) { if (!selarr[i]) continue; aOption = document.createElement('OPTION'); if (i == topvalue) { aOption = document.createElement('OPTION'); aOption.text = selarr[i]; aOption.value = i; selObj.options.add(aOption); aOption.selected = true; } else { aOption = document.createElement('OPTION'); aOption.text = selarr[i]; aOption.value = i; selObj.options.add(aOption); } } document.getElementById('span_' + emname).appendChild(selObj); //如果子类存在值,创建子类 selObj = document.createElement("select"); selObj.name = emname + '_son'; selObj.id = emname + '_son'; selObj.className = "form-control admin-input-sm mr-2"; selObj.onchange = ChangeSon; aOption = document.createElement('OPTION'); aOption.text = '请选择'; aOption.value = 0; selObj.options.add(aOption); //当大类有值输出子类 if (topvalue > 0) { var selv = topvalue; var maxv = parseInt(topvalue) + 500; var count = 0; for (i = selv + 1; i < maxv; i++) { if (!selarr[i]) continue; aOption = document.createElement('OPTION'); if (i == sonvalue) { aOption = document.createElement('OPTION'); aOption.text = selarr[i]; aOption.value = i; selObj.options.add(aOption); aOption.selected = true; } else { aOption = document.createElement('OPTION'); aOption.text = selarr[i]; aOption.value = i; selObj.options.add(aOption); } count = count + 1; } } if (count > 0) { document.getElementById('span_' + emname + '_son').style.display = "initial"; document.getElementById('span_' + emname + '_son').appendChild(selObj); } else { document.getElementById('span_' + emname + '_son').style.display = "none"; } //若存在第三级则创建 if (secvalue > 0) { selObj = document.createElement("select"); selObj.name = emname + '_sec'; selObj.id = emname + '_sec'; selObj.onchange = ChangeSec; aOption = document.createElement('OPTION'); aOption.text = '请选择'; selObj.className = "form-control admin-input-sm mr-2"; aOption.value = 0; selObj.options.add(aOption); var selv = sonvalue; var maxv = parseInt(sonvalue) + 0.5; i = 0; var count = 0; for (i = selv + 0.001; i < maxv; i = FloatAdd(i, 0.001)) { if (!selarr[i]) continue; aOption = document.createElement('OPTION'); if (i == secvalue) { aOption = document.createElement('OPTION'); aOption.text = selarr[i]; aOption.value = i; selObj.options.add(aOption); aOption.selected = true; } else { aOption = document.createElement('OPTION'); aOption.text = selarr[i]; aOption.value = i; selObj.options.add(aOption); } count = count + 1; } } if (count > 0) { document.getElementById('span_' + emname + '_sec').style.display = "initial"; document.getElementById('span_' + emname + '_sec').appendChild(selObj); } else { document.getElementById('span_' + emname + '_sec').style.display = "none"; } } else { for (i = 0; i <= selarr.length; i += 1) { if (!selarr[i]) continue; aOption = document.createElement('OPTION'); if (i == selvalue) { aOption = document.createElement('OPTION'); aOption.text = selarr[i]; aOption.value = i; selObj.options.add(aOption); aOption.selected = true; } else { aOption = document.createElement('OPTION'); aOption.text = selarr[i]; aOption.value = i; selObj.options.add(aOption); } } document.getElementById('span_' + emname).appendChild(selObj); } } //两个小数相加进度计算 function FloatAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } m = Math.pow(10, Math.max(r1, r2)) return (arg1 * m + arg2 * m) / m } //清除旧对象 function clear(o) { l = o.length; for (i = 0; i < l; i++) { o.options[1] = null; } }