多行select中的数据展示和单个删除

     
    /**
    删除多选select中 的某个值,公共方法 
    只适用于同级节点下只有一个select的情况
        v 此按钮,this
        _id,option中的value的name属性
        _name,option中的text的name属性
        ***如果每次添加不清空options,而是在原有基础添加
        pr_id:备用value,需要保留select中之前的数据时填写
        pr_name:备用 name,需要保留select中之前的数据时填写
    */
    function deletedOne(v,_id,_name,pr_id,pr_name){
        var id="input:hidden[name="+_id+"]";
        var name="input:hidden[name="+_name+"]";
        var parent=$(v).parent();
        var sele=parent.find("select")[0];
        var options=sele.options;
        if(options){
            for(var i=0;i<options.length;i++){
                if(options[i].selected){
                    options.remove(i);
                }
            }
            var idstr="";
            var namestr="";
            for(var i=0;i<options.length;i++){
                if(!options[i].selected){
                    if(idstr==""){
                        idstr=options[i].value;
                        namestr=options[i].text;
                    }else{
                        idstr=idstr+","+options[i].value;
                        namestr=namestr+","+options[i].text;
                    }
                }
            }
            var id_node=parent.find(id)[0];
            var name_node=parent.find(name)[0];
            $(id_node).val(idstr);
            $(name_node).val(namestr);
            if(pr_id && pr_name){
                var _id_node=parent.find("input:hidden[name="+pr_id+"]")[0];
                var _name_node=parent.find("input:hidden[name="+pr_name+"]")[0];
                $(_id_node).val(idstr);
                $(_name_node).val(namestr);
            }
        }
    }
    /**
    公共的多选框显示方法
        v:按钮
        _id:value的name属性
        _name:text的name属性
        ****如果每次添加不清空options,而是在原有基础添加
        _pr_id:备用字段value,需要保留select中之前的数据时填写
        _pr_name:备用字段name,需要保留select中之前的数据时填写
    */
    function  showSelect(v,_id,_name,_pr_id,_pr_name){
        var parent=$(v).parent();
        //获取同级下的节点
        var    name_node=parent.find("input:hidden[name="+_name+"]")[0]; 
        var    id_node=parent.find("input:hidden[name="+_id+"]")[0];
        var idstr=$(id_node).val();
        var namestr=$(name_node).val();
        var ids=idstr.split(",");
        var names=namestr.split(",");
        //两个字段不为空时进行拼接操作,并把当前数据保留至备用位置
        if(_pr_id && _pr_name){
            var pr_id_node=parent.find("input:hidden[name="+_pr_id+"]")[0];
            var pr_name_node=parent.find("input:hidden[name="+_pr_name+"]")[0];
            var  pr_idstr=$(pr_id_node).val();
            var  pr_namestr=$(pr_name_node).val();
            if(pr_idstr){
                for(var i=0;i<ids.length;i++){
                    var index=(pr_idstr+",").indexOf(ids[i]+",");
                    if(index==-1){
                        pr_idstr=pr_idstr+","+ids[i];
                        pr_namestr=pr_namestr+","+names[i];
                    }
                }
                $(pr_id_node).val(pr_idstr);
                $(pr_name_node).val(pr_namestr);
                $(id_node).val(pr_idstr);
                $(name_node).val(pr_namestr);
            }else{
                $(pr_id_node).val(idstr);
                $(pr_name_node).val(namestr);
            }
        }
        //把值显示出在多选框
        var sele=parent.find("select")[0];
        $(sele).empty();
        var result_str=$(id_node).val();
        if(result_str){
            var result_ids=result_str.split(",");
            var result_name=$(name_node).val().split(",");
            for(var i=0;i<result_ids.length;i++){
                var opt=new Option(result_name[i],result_ids[i]);
                opt.title=result_name[i];
                sele.add(opt);
            }
        }
    }

 

posted @ 2018-03-27 17:10  天涯已可  阅读(558)  评论(0编辑  收藏  举报