首页 > 代码库 > 表单处理之综合练习

表单处理之综合练习

实现功能界面如下:

技术分享

实现代码(index.html文件):

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title></title>

     <style>

        .edit-mode{

            background-color: #b3b3b3;

            padding: 8px;

            text-decoration: none;

            color: white;

        }

        .editing{

            background-color: #f0ad4e;

        }

    </style>

</head>

<body>

    <div style="padding: 20px">

        <input type="button"  ‘#tb1‘);" value="http://www.mamicode.com/全选" />




        <input type="button"  ‘#tb1‘);" value="http://www.mamicode.com/反选" />

        <input type="button"  ‘#tb1‘);" value="http://www.mamicode.com/取消" />


        <a id="edit_mode" class="edit-mode" href="javascript:void(0);"

            ‘#tb1‘);">进入编辑模式</a>


    </div>



    <table border="1">

        <thead>

            <tr>

                <th>选择</th>

                <th>主机名</th>

                <th>端口</th>

                <th>业务</th>

                <th class="tb1">状态</th>

            </tr>

        </thead>

        <tbody id="tb1">

            <tr>

                <td><input type="checkbox" /></td>

                <td edit="true">10.0.0.10</td>

                <td>22</td>

                <td edit="true" edit-type="select" global-key="BUSINESS"  select-val="2" >福利商城</td>

                <td edit="true" edit-type="select" global-key="STATUS"  select-val="1" >在线</td>

            </tr>

            <tr>

                <td><input type="checkbox" /></td>

                <td edit="true">10.0.0.11</td>

                <td>33</td>

                <td edit="true" edit-type="select" global-key="BUSINESS"  select-val="3">创业项目</td>

                <td edit="true" edit-type="select" global-key="STATUS"  select-val="1">在线</td>

            </tr>

            <tr>

                <td><input type="checkbox" /></td>

                <td edit="true">10.0.0.12</td>

                <td>44</td>

                <td edit="true" edit-type="select" global-key="BUSINESS" select-val="3" >夺宝平台</td>

                <td edit="true" edit-type="select" global-key="STATUS" select-val="2">下线</td>

            </tr>

        </tbody>

    </table>

    <script src="http://www.mamicode.com/js/jquery-1.8.2.min.js"></script>

    <script src="http://www.mamicode.com/js/edit_row.js"></script>

</body>

</html>


实现代码(js文件):


STATUS = [

    {‘id‘: 1, ‘text‘: "在线"},

    {‘id‘: 2, ‘text‘: "下线"}

];


BUSINESS = [

    {‘id‘: 1, ‘text‘: "福利商城"},

    {‘id‘: 2, ‘text‘: "创业项目"},

    {‘id‘: 3, ‘text‘: "夺宝平台"}

];


//console.log(STATUS);

//console.log(window[‘STATUS‘]);


$(function(){


    // checkbox默认事件优先,然后执行自定义的事件

    $(‘#tb1‘).find(‘:checkbox‘).click(function(){

        var tr = $(this).parent().parent();

        if($("#edit_mode").hasClass(‘editing‘)){

            if($(this).prop(‘checked‘)){

                // 当前行进入编辑状态

                RowIntoEditMode(tr);

            }else{

                // 当前行退出编辑状态

                RowOutEditMode(tr);

            }

        }

    });

});








function CheckAll(mode, tb){

    // 1、选中checkbox

    // 2、如果已经进入编辑模式,让选中行进入编辑状态

    // tb = #tb1

    //$(tb) = $(‘#tb1‘)

    $(tb).children().each(function(){

        // $(this) 表示循环过程中,每一个tr,每一行数据

        var tr = $(this);

        var isChecked = $(this).find(‘:checkbox‘).prop(‘checked‘);

        if(isChecked==true){

        }else{

            $(this).find(‘:checkbox‘).prop(‘checked‘,true);

            // 如果已经进入编辑模式,让选中行进入编辑状态

            var isEditMode = $(mode).hasClass(‘editing‘);

            if(isEditMode){

                // 当前行进入编辑状态

                RowIntoEditMode(tr);

            }

        }

    });

}


function CheckReverse(mode, tb){

    // 是否进入了编辑模式

    if($(mode).hasClass(‘editing‘)){

        $(tb).children().each(function(){

            // 遍历所有tr

            var tr = $(this);

            var check_box = tr.children().first().find(‘:checkbox‘);

            if(check_box.prop(‘checked‘)){

                check_box.prop(‘checked‘,false);

                RowOutEditMode(tr);


            }else{

                check_box.prop(‘checked‘,true);

                RowIntoEditMode(tr);

            }

        });

    }else{

        //

        $(tb).children().each(function(){

            var tr = $(this);

            var check_box = tr.children().first().find(‘:checkbox‘);

            if(check_box.prop(‘checked‘)){

                check_box.prop(‘checked‘,false);

            }else{

                check_box.prop(‘checked‘,true);

            }

        });

    }

}


function CheckCancel(mode, tb){

    // 1、取消选中checkbox

    // 2、如果已经进入编辑模式,行推出编辑状态

    $(tb).children().each(function(){

        var tr = $(this);

        if(tr.find(‘:checkbox‘).prop(‘checked‘)){

            // 移除选中

            tr.find(‘:checkbox‘).prop(‘checked‘, false);


            var isEditing = $(mode).hasClass(‘editing‘);

            if(isEditing == true){

                // 当前行,推出编辑状态

                RowOutEditMode(tr);

            }

        }


    });

}


function EditMode(ths, tb){

    // ths =this,

    var isEditing = $(ths).hasClass(‘editing‘);

    if(isEditing){

        // 退出编辑模式

        $(ths).text(‘进入编辑模式‘);

        $(ths).removeClass(‘editing‘);

        $(tb).children().each(function(){

            var tr = $(this);

            if(tr.find(‘:checkbox‘).prop(‘checked‘)){

                // 当前行,推出编辑状态

                RowOutEditMode(tr);

            }

        });

    }else{

        // 进入编辑模式

        $(ths).text(‘退出编辑模式‘);

        $(ths).addClass(‘editing‘);

        $(tb).children().each(function(){

            // $(this) 表示循环过程中,每一个tr,每一行数据

            var tr = $(this);

            var isChecked = $(this).find(‘:checkbox‘).prop(‘checked‘);

            if(isChecked==true){

                // 当前行进入编辑状态

                RowIntoEditMode(tr);

            }

        });

    }

}



function RowIntoEditMode(tr){

    tr.children().each(function(){

        var td = $(this);

        if(td.attr(‘edit‘) == ‘true‘){

            if(td.attr(‘edit-type‘) == "select"){

                var all_values = window[td.attr(‘global-key‘)];

                var select_val = td.attr(‘select-val‘);

                select_val = parseInt(select_val);

                var options = "";

                $.each(all_values, function(index, value){

                    if(select_val == value.id){

                        options += "<option selected=‘selected‘>" + value.text + "</option>";

                    }else{

                        options += "<option>" + value.text + "</option>";

                    }

                });

                var temp = "<select onchange=‘MultiChange(this);‘>" + options + "</select>";

                td.html(temp);

            }else{

                var text = td.text();

                var temp = "<input type=‘text‘ value=http://www.mamicode.com/‘"  + text+    "‘ />";

                td.html(temp);

            }

        }

    })

}


globalCtrlKeyPress = false;

// 如果按下键盘的任意键,执行 function

window.onkeydown = function(event){

    console.log(event.keyCode);

    if(event && event.keyCode == 17){

        window.globalCtrlKeyPress = true;

    }else{

        window.globalCtrlKeyPress = false;

    }

};


function MultiChange(ths){

    // 检测是否按下ctr键

    if(window.globalCtrlKeyPress == true){

        // td所在的tr中的索引位置

        var index = $(ths).parent().index();

        var value = http://www.mamicode.com/$(ths).val();

        $(ths).parent().parent().nextAll().find("td input[type=‘checkbox‘]:checked").each(function(){

            $(this).parent().parent().children().eq(index).children().val(value);

        });


    }

}


function RowOutEditMode(tr){

    tr.children().each(function(){

        var td = $(this);

        if(td.attr(‘edit‘) == ‘true‘){

            var inp  = td.children(‘:first‘);

            var input_value = http://www.mamicode.com/inp.val();

            td.text(input_value);

        }

    });

}


本文出自 “平平淡淡才是真” 博客,请务必保留此出处http://ucode.blog.51cto.com/10837891/1851653

表单处理之综合练习