日期:2014-05-16  浏览次数:20786 次

求编辑文章或产品信息时,其所属大类和小类发生变化的处理方法
文章归属于不同的大类和小类。
        当用户编辑文章内容时,需要对其所属的大类小类进行编辑,如何实现这两个选择框联动呢?
前提:在文章初始编辑页面,大类小类在选择框里要有默认值(即建立文章时所属类别的原始值),但是当用户要更改大类小类时,这两个选择框要根据大类id发生联动

数据结构说明:
1,文章表:news
cntnt,文章内容
classid,大类id
smallclassid  小类id

2,大类表:class
classid,大类id
classname,大类名称

3,小类表:smallclass
classid,所属大类id
smallclassid,小类id
smallclassname  小类名称

------解决方案--------------------
<select name="classid" id="bigclass"></select>
<select name="smallclassid" id="minclass"></select>
<script type="text/javascript">
    var arr=[200002,102];//[小类ID,大类ID]
    var json=[{id:101,name:'父类1',subclass:[{id:200001,name:'子类1-1'},{id:200002,name:'子类1-2'}]},{id:102,name:'父类2',subclass:[{id:200001,name:'子类2-1'},{id:200002,name:'子类2-2'},{id:200003,name:'子类2-3'}]}];//json数据由asp生成
    var bigclass=document.getElementById("bigclass"),minclass=document.getElementById("minclass");
    bigclass.onchange = function(){
        for(var n=json.length;n--;){
            if(json[n].id==this.value){
                minclass.innerHTML="";
                create(minclass,json[n].subclass);
                break;
            }
        }
    };
    function create(obj,opt){
        var op,select = arr && arr.pop();
        for(var i=0,n=opt.length;i<n;i++){
            op=document.createElement("option");
            op.value=opt[i].id;
            op.text=opt[i].name;
            op.selected = select==opt[i].id;
            //obj.options.add(new Option(opt[i].name,opt[i].id,select==opt[i].id)); IE不支持 尼玛
            obj.options.add(op);
        }
    }
    create(bigclass,json);
    bigclass.onchange();
</script>