在织梦后台添加文章时,使用一级联动时也显示两个框,这个虽然不影响使用,但是看着还是不爽,研究了一下解决办法:
修改/images/enums.js,
1、添加一个是否存在子类别的判断,添加在177行var selarr = eval('em_'+emname+'s');下面
//检测子类是否存在,2014-2-22 修改BY:米易网络工作室 Q:86485405
var isHasSon = "N";
for(i = 500; i <= selarr.length; i++){
if(i%500>0){ //检查是否存在子类别
if(!selarr[i]){
continue;
}else{
isHasSon = "Y";
break;
}
}
}
2、237行左右,创建子类的代码加一个判断条件,修改后代码为:
//如果子类存在值,创建子类,并且添加onchange事件2014-2-22 修改BY:米易网络工作室 Q:86485405
if(isHasSon=="Y" || sonvalue>0){
selObj = document.createElement("select");
selObj.name = emname + '_son';
selObj.id = emname + '_son';
selObj.onchange = ChangeSon;
aOption = document.createElement('OPTION');
aOption.text = '请选择..';
aOption.value = 0;
selObj.options.add(aOption);
}
3、修改121行的顶级类改变事件函数。主要是修正顶级类改变时,本来只有一级选择的,后面却多生成一个二级框的问题。
修改后的函数为:
//顶级类改变事件
function selNextSon()
{
var emname = this.name.replace('_top', '');
var v = this.options[this.selectedIndex].value;
document.getElementById('hidden_'+emname).value = v; //为隐藏的提交input赋值
//更改子级栏目的选项内容
if( document.getElementById(emname+'_son') ) //检测是否存在二级选框元素
{
var oj = document.getElementById(emname + '_son');
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 = '';
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);
}
document.getElementById('span_'+emname+'_son').appendChild(oj);
}//end if
}