여러 options 연결, select 간 난 서

select 탭 에 많은 데이터 가 연 결 될 수 있 습 니 다. 순 서 를 고려 하지 않 고 해결 방법 입 니 다.
showOptions: 합 법성 을 고려 하지 않 은 상태 에서 options 의 조건 을 모두 문서 에 표시 합 니 다. 이전에 선 택 된 option 이 선택 되 었 습 니 다. checkOptions () 를 실행 합 니 다. 문서 의 조건 합 법성 을 검사 하고 비합법적 인 옵션 은 삭 제 됩 니 다.

$(document).ready(function(){
(function(){
   var Main = {//    
        init:function(){
            
        }
   };
   var Search = {//    
        options: [],
        tempOptions:[],
        init: function(){
            this.getOptions();
            this.showOptions();
            this.checkOptions();
            this.eventAttach();
        },
        getOptions: function(){
            
        //OM:option  
            this.options = {
                XWLB:{
                    type: "OM",
                    n: "    ",//    
                    o: [//options value,    ,    
                        ["","  ",""],
                        ["201","      ","{type} == 1 || {type} == 5"],
                        ["202","     ","{ZYDM} == '010101' || {ZYDM} == '010102'"]
                    ]//  
                },
                ZYDM:{
                    type: "OM",
                    n: "    ",
                    o: [
                        ["","  ",""],
                        ["010101","Max    ",""],
                        ["010102","Max    ",""]
                    ]
                }
            };    

        },
        showOptions: function(s){
            var html = "<table><tr>";
            var n = 0;
            for(var i in this.options){
                n ++;
                if(!(n % 3)) html += "</tr><tr>";
                var op = this.options[i];
                html += "<td>" + op.n + "</td>";
                switch(op.type){
                    case "OM": {
                       html += "<td><select id='" + i + "' name='" + i + "'>";
                       var temp = $("#" + i).val();//     selected      
                       for(var j in op.o){
                            var o = op.o[j];
                            if(temp == o[0]){//         ,    
                                html += "<option selected='selected' id='i" + o[0] + "' value='" + o[0] + "'>" + o[1] + "</option>";
                            }else html += "<option  id='i" + o[0] + "' value='" + o[0] + "'>" + o[1] + "</option>";
                       }
                       html += "</select>";

                    }
                    break;
                }
                html += "</td>";
            }
            html += "</tr></table>";
            $(".right").html(html);
            this.eventAttach();
        },
        checkOptions: function(){//        
            for(var i in this.options){
                var op = this.options[i];
                switch(op.type){
                    case "OM":{
                       for(var j in op.o){
                            var o = op.o[j];
                            if(o[2] != ""){//    
                                var flag = eval(o[2].replace(/{([A-Za-z0-9_]+)}/g,"$('#$1').val()"));
                                if(!flag) $("#i" + o[0]).remove();//    ,   
                            }
                       }
                    }break;
                }
            }
        },
        getParameter: function(){
            
        },
        eventAttach: function(){
            var _this = this;
            $(".right select").change(function(){
                _this.showOptions();
                _this.checkOptions();
            });
        },
        unbindEvent: function(){
            $(".right select").unbind("change");
        }
   };
    Search.init();
})();
});

좋은 웹페이지 즐겨찾기