jQuery添加编辑删除单选多选题的代码

点击添加可以添加题目,可以添加单选或者多选题目,选项可以添加可以减少选项,填写选择此选项的分数,点击保存,保存到json,点击编辑,可以修改,点击save可以保存修改,点击delete按钮可以删除,使用的时候可以整体的json保存到数据库

全部代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>index</title>

    <script src="jquery.js" type="text/javascript"></script>

    <style type="text/css">

    </style>

    <div id="all">

    </div>
    <div id="form">
        <div class="title">题目:<input type="text" id="title" /></div>
        <div class="sm">单选/多选 <span><input type="radio" value="s" name="sm" checked="checked"/>单选</span>
            <span><input type="radio" value="m" name="sm" />多选</span></div>
        <div>
            <span id="options" style="display: inline-block" >
                 <div>
                    <input type="text" >
                     <input type="number" >
                </div>
                 <div>
                    <input type="text" >
                     <input type="number" >
                </div>
                <div>
                    <input type="text" >
                    <input type="number" >
                </div>
             </span>
            <button id="more" style="display: inline-block">+More</button>
        </div>
        <div><button id="save">+Save</button></div>
    </div>

</head>
<body>

<script>
    var json=[{
        id:1,
        title:"题目1",
        option:[
            {
                id:1,
                title:'答案A',
                point:3
            },{
                id:2,
                title:'答案B',
                point:2
            },{
                id:3,
                title:'答案C',
                point:1
            }
        ],
        sm:'s'
    },{
        id:2,
        title:"题目2",
        option:[
            {
                id:1,
                title:'答案1',
                point:3
            },{
                id:2,
                title:'答案2',
                point:2
            },{
                id:3,
                title:'答案3',
                point:1
            }
        ],
        sm:'s'
    },{
        id:3,
        title:"题目3",
        option:[
            {
                id:1,
                title:'选项A ',
                point:3
            },{
                id:2,
                title:'选项B',
                point:2
            },{
                id:3,
                title:'选项C',
                point:1
            }
        ],
        sm:'m'
    }];
    $(function(){
        var html="";

        json.forEach(function(item,index){
            html+="<div class='title'>"+item.title+"</div><div class='title'>"+(item.sm=="s"?"单选":"多选")+"</div>";
            html+="<ul>";
            item.option.forEach(function(it){
                html+="<li><span class='attr_name'>"+it.title+"</span><span class='attr_point'>"+it.point+"</span></li>";
            });
            html+="</ul><div><button class='delete' data-id='"+item.id+"'>Delete</button><button class='edit' data-id='"+item.id+"'>Edit</button></div>";
        });

        html+="<button id='add'>+Add</button>";

        $("#all").html(html);

        $("#form").hide();
    });

    $("#add").live("click",function(){
        if($("#form").css("display")=="none"){
            $("#form").show();
            $("#add").html("Hide");
        }else{
            $("#form").hide();
            $("#add").html("+Add");
        }
    });
    $("#more").live("click",function(){
        var html="<div><input type='text'>  <input type='number' ><button class='remove'>-Remove</button></div>";
        $("#options").append(html);
    });

    $("#more_").live("click",function(){
        var html="<div><input type='text'>  <input type='number' ><button class='remove'>-Remove</button></div>";
        $("#options_").append(html);
    });

    $(".edit").live("click",function(){

        if($("#form_").length>0){
            $("#form_").remove();
        }

        //将当前数据填充到from中去
        var id = $(this).data("id");
        var obj={};
        json.forEach(function(item,index){
            if(item.id==id){
                obj=item;
            }
        });

        var html="";

        html+='<div id="form_">';
        html+='<input type="hidden" name="id" value="'+obj.id+'"/>';

        html+='<div class="title">题目:<input type="text" id="title" value="'+obj.title+'"/></div>';

        html+='<div class="sm">单选/多选 <span><input type="radio" value="s" name="sm"';
        if(obj.sm=='s'){
            html+='checked="checked" ';
        }
        html+='/>单选</span>';
        html+='<span><input type="radio" value="m" name="sm" ';
        if(obj.sm=='m'){
            html+='checked="checked" ';
        }
        html+= '/>多选</span></div>';
        html+='<div>';

        html+='<span id="options_" style="display: inline-block" >';

        obj.option.forEach(function(item,index){

        html+='<div>';
        html+='<input type="text" value="'+item.title+'" >';
        html+='<input type="number"  value="'+item.point+'" >';
        if(index>1){
            html+='<button class="remove">-Remove</button>';
        }
        html+='</div>';

        });


        html+='</span>';
        html+='<button id="more_" style="display: inline-block">+More</button>';
        html+='</div>';
        html+='<div><button id="save_">+Save</button><button id="cancel_">Cancel</button></div>';
        html+='</div>';
        $(this).after(html);

    });

    $("#cancel_").live("click",function(){
        $(this).parents("#form_").remove();
    });

    $(".remove").live("click",function(){
        $(this).parent().remove();
    });

    $("#save").live("click",function(){
        var title=$("#form .title input").val();
        if(!title){
            alert("填写的标题不能为空");
            return false;
        }
        var sm=$("#form input[name='sm']:checked").val();
        var texts=$("#options input[type='text']");
        var numbers=$("#options input[type='number']");
        console.log("numbers",numbers);


        var option_titles=[];
        var bool_text=true;
        texts.each(function(item){
            if($(this).val().length==0){
                bool_text=false;
            }
            option_titles.push($(this).val());
        });

        if(!bool_text){
            alert("填写的项不能为空");
            return false;
        }


        var option_points=[];
        var bool_point=true;
        numbers.each(function(item){
            if($(this).val().length==0){
                bool_point=false;
            }
            option_points.push($(this).val());
        });

        if(!bool_point){
            alert("填写的项分值不能为空");
            return false;
        }

        console.log("option_titles",option_titles);
        console.log("option_points",option_points);

        var item={};
        item.id=json.length+1;
        item.title=title;
        item.sm=sm;

        var options=[];
        option_titles.forEach(function(it,index){
            options.push({"id":(index+1),"title":it,"point":option_points[index]});
        });

        item.option=options;

        $("#form").hide();

        json.push(item);

        var html="";
        json.forEach(function(item,index){
            html+="<div class='title'>"+item.title+"</div><div class='title'>"+(item.sm=="s"?"单选":"多选")+"</div>";
            html+="<ul>";
            item.option.forEach(function(it){
                html+="<li><span class='attr_name'>"+it.title+"</span><span class='attr_point'>"+it.point+"</span></li>";
            });
            html+="</ul><div><button class='delete' data-id='"+item.id+"'>Delete</button><button class='edit' data-id='"+item.id+"'>Edit</button></div>";
        });

        html+="<button id='add'>+Add</button>";

        $("#all").html(html);
        console.log("json",json);



    });




    $("#save_").live("click",function(){
        var title=$("#form_ .title input").val();
        var id=$("#form_  input:hidden").val();
        if(!title){
            alert("填写的标题不能为空");
            return false;
        }
        var sm=$("#form_ input[name='sm']:checked").val();
        var texts=$("#options_ input[type='text']");
        var numbers=$("#options_ input[type='number']");
        console.log("numbers",numbers);


        var option_titles=[];
        var bool_text=true;
        texts.each(function(item){
            if($(this).val().length==0){
                bool_text=false;
            }
            option_titles.push($(this).val());
        });

        if(!bool_text){
            alert("填写的项不能为空");
            return false;
        }


        var option_points=[];
        var bool_point=true;
        numbers.each(function(item){
            if($(this).val().length==0){
                bool_point=false;
            }
            option_points.push($(this).val());
        });

        if(!bool_point){
            alert("填写的项分值不能为空");
            return false;
        }


        var item={};
        item.id=id;
        item.title=title;
        item.sm=sm;

        var options=[];
        option_titles.forEach(function(it,index){
            options.push({"id":(index+1),"title":it,"point":option_points[index]});
        });

        item.option=options;

        $("#form_").remove();

        json = json.map(function(it){
            if(it.id==item.id){
                return item;
            }else{
                return it;
            }
        });

        var html="";
        json.forEach(function(item,index){
            html+="<div class='title'>"+item.title+"</div><div class='title'>"+(item.sm=="s"?"单选":"多选")+"</div>";
            html+="<ul>";
            item.option.forEach(function(it){
                html+="<li><span class='attr_name'>"+it.title+"</span><span class='attr_point'>"+it.point+"</span></li>";
            });
            html+="</ul><div><button class='delete' data-id='"+item.id+"'>Delete</button><button class='edit' data-id='"+item.id+"'>Edit</button></div>";
        });

        html+="<button id='add'>+Add</button>";

        $("#all").html(html);




    });


    $(".delete").live("click",function(){

        var id = $(this).data("id");
        var json_=[];
        json.forEach(function(item,index){
            if(item.id!=id){
                json_.push(item);
            }
        });
        json=json_;
        var html="";
        json.forEach(function(item,index){
            html+="<div class='title'>"+item.title+"</div><div class='title'>"+(item.sm=="s"?"单选":"多选")+"</div>";
            html+="<ul>";
            item.option.forEach(function(it){
                html+="<li><span class='attr_name'>"+it.title+"</span><span class='attr_point'>"+it.point+"</span></li>";
            });
            html+="</ul><div><button class='delete' data-id='"+item.id+"'>Delete</button><button class='edit' data-id='"+item.id+"'>Edit</button></div>";
        });

        html+="<button id='add'>+Add</button>";

        $("#all").html(html);




    });


</script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/chendongpu/article/details/113541808