zoukankan      html  css  js  c++  java
  • 可编辑表格(Editable Table)

    需求分析

    1.单击table的每个cell后,给cell加上一个尺寸相当的input;

    2.input后把value传给cell的innerHTML;

    3.失焦后删除input。

    HTML

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="gb2312" />
            <link rel="stylesheet" type="text/css" href="css/table.css"/>
            <script src="js/jquery-1.11.3.min.js"></script>
        </head>
        <body>
            <div class="container">
                <table class="table" id="edit-table">
                    <caption><h2>Title</h2></caption>
                    <thead>
                        <tr>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                    </tbody>
                </table>
                <ul class="pagination">
                    <li><a href="#">首页</a></li>
                    <li><a href="#">上一页</a></li>
                    <li><a href="#">1</a></li>
                    <li><a href="#">2</a></li>
                    <li><a href="#">3</a></li>
                    <li><a href="#">下一页</a></li>
                    <li><a href="#">末页</a></li>
                </ul>
            </div>
            <script src="js/insert-input.js"></script>
            <script src="js/main.js"></script>
        </body>
    </html>

    table.css

    /*The pagination page style*/
    
    html, body, dl, dd, dt,
    ul, ol, li,
    h1, h2, h3, h4, h5, h6, pre, code,
    form, fieldset, legend, input, textarea, optgroup,
    p, blockquote, figure, hr, menu, dir,
    thead, tbody, tfoot, th, td {
        margin: 0;
        padding: 0;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
    }
    
    *:before, *:after {
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
    }
    
    html{
        font-size: 10px;
        font-family: sans-serif;
        -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
        display: block;
    }
    
    body {
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif ,'Microsoft Yahei', 微软雅黑;
        font-size: 14px;
        line-height: 1.42857143;
        color: #333;
        background-color: #fff;
        margin: 0;
        display:block;
    }
    
    table{
        background-color: transparent;
        border-spacing: 0;
        border-collapse: collapse;
        border-radius:4px;
        table-layout:fixed;
    }
    caption{
        padding-top: 8px;
        padding-bottom: 8px;
        padding-right: 15px;
        padding-left: 15px;
        color: #777;
        text-align: left;
    }
    th{
        text-align: center;
        border-top: 0;
    }
    tr{
        
    }
    td{
        display:table-cell;
        padding:0;
        text-align: center;
        vertical-align:middle;
    }
    
    ul{
        margin-top: 0;
        margin-bottom: 10px;
    }
    
    a {
        color: #337ab7;
        text-decoration: none;
        background-color: transparent;
    }
    
    h2{
        font-size: 30px;
    }
    
    h1 ,h2 ,h3{
        margin-top: 20px;
        margin-bottom: 10px;
    }
    
    h1, h2, h3, h4, h5, h6{
        font-family: inherit;
        font-weight: 500;
        line-height: 1.1;
        color: inherit;
    }
    
    
    
    /*div class*/
    .container {
      padding-right: 15px;
      padding-left: 15px;
      margin-right: auto;
      margin-left: auto;
    }
    @media (min- 768px) {
      .container {
        width: 750px;
      }
    }
    @media (min- 992px) {
      .container {
        width: 970px;
      }
    }
    @media (min- 1200px) {
      .container {
        width: 1170px;
      }
    }
    /*table class*/
    .table{
        width: 100%;
        max-width: 100%;
        margin-bottom: 20px;
    }
    .table > thead > tr{
        background-color: #FCFCFC;
    }
    .table > thead > tr > th{
        border-bottom-width: 2px;
        border: 1px solid #ddd;
        padding: 5px;
        vertical-align: bottom;
        border-bottom: 2px solid #ddd;
        line-height: 1.42857143;
    }
    /*.table>tbody>tr:nth-of-type(odd){
        background-color: #f9f9f9;
    }*/
    .table > tbody > tr:hover{
        background-color: #f5f5f5;
    }
    .table > tbody > tr > td{
        border: 1px solid #ddd;
        padding: 5px;
        line-height: 1.42857143;
        vertical-align: middle;
        cursor:pointer;
    }
    .table > tbody > tr > td:hover{
        background-color: #F5F5DC;
    }
    /*ul class*/
    .pagination {
        display: block;
        padding-left: 0;
        margin: 20px 0;
        border-radius: 4px;
        float: right;
    }
    .pagination > li {
        display: inline;
    }
    .pagination > li > a{
        position: relative;
        float: left;
        padding: 6px 12px;
        margin-left: -1px;
        line-height: 1.42857143;
        color: #337ab7;
        text-decoration: none;
        background-color: #fff;
        border: 1px solid #ddd;
    }
    .pagination > li:first-child > a{
        margin-left: 0;
        border-top-left-radius: 4px;
        border-bottom-left-radius: 4px;
    }
    .pagination > li:last-child > a{
        border-top-right-radius: 4px;
        border-bottom-right-radius: 4px;
    }
    .pagination > li > a:hover,
    .pagination > li > a:focus{
        z-index: 3;
        color: #23527c;
        background-color: #eee;
        border-color: #ddd;
    }
    /*input class*/
    .insert-edit-input{
        display: inline;
        width: 100%;
        height: inherit;
        font-size: 14px;
        font-family:inherit;
        line-height: 1.42857143;
        color: #555;
        background-color: #fff;
        background-image: none;
        border: 1px solid #ccc;
        border-radius: 4px;
        -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
            box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
        -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
            -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
            transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
    }

    insert-input.js

    function editCell(event){  
        var currentCell;
        
        if(event == null){
            currentCell = window.event.srcElement;
        }else{
            currentCell = event.target;
        }
        
        if(currentCell.tagName.toLowerCase() == "td"){
            var input = document.createElement("input");
            input.type = "text";
            input.setAttribute("class", "insert-edit-input");
            input.value = currentCell.innerHTML;
            input.width = currentCell.style.width;
            
            input.onblur = function(){
                currentCell.innerHTML = input.value;
                //currentCell.removeChild(input);
                input.remove();
            };
            input.onkeydown = function(event){
                if(event.keyCode == 13){
                    input.blur();
                }
            };
      
            currentCell.innerHTML = "";
            currentCell.appendChild(input);
            input.focus();
        }
    }
    
    function setToEditable(tableid){
        document.getElementById(tableid).ondblclick=editCell;
        //document.getElementById(tableid).onclick=editCell;
    }

    main.js

    $(document).ready(function(){
        setToEditable('edit-table');
    });

     还有一种使用contentEditable属性来控制的方法

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="gb2312" />
            <link rel="stylesheet" type="text/css" href="css/table.css"/>
            <script src="js/jquery-1.11.3.min.js"></script>
        </head>
        <body>
            <div class="container">
                <table class="table" id="edit-table">
                    <caption><h2>Title</h2></caption>
                    <thead>
                        <tr>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                            <th>Test</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                        <tr>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                            <td>test</td>
                        </tr>
                    </tbody>
                </table>
                <ul class="pagination">
                    <li><a href="#">首页</a></li>
                    <li><a href="#">上一页</a></li>
                    <li><a href="#">1</a></li>
                    <li><a href="#">2</a></li>
                    <li><a href="#">3</a></li>
                    <li><a href="#">下一页</a></li>
                    <li><a href="#">末页</a></li>
                </ul>
            </div>
            <script>
                $(document).ready(function(){
                    var editCell = $("table#edit-table td");
                    editCell.each(function(index,element){
                        editCell.eq(index).click(function(){
                            editCell.eq(index).attr("contentEditable","true");
                        });
                    });
    //                var editCell = $("table#edit-table td");
    //                editCell.eq(0).click(function(){
    //                    editCell.eq(0).attr("contentEditable","true");
    //                });
                });
            </script>
        </body>
    </html>

    http://abruzzi.iteye.com/blog/299381

    http://www.easyui.info/archives/623.html  使用easyUI插件

  • 相关阅读:
    Laravel 手动分页实现
    大话Web-Audio-Api
    关于audio标签播放跨域的问题
    jquery的命名空间
    正则表达式的应用
    七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL 【转】
    七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 【转】
    七天学会ASP.NET MVC (四)——用户授权认证问题 【转】
    七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理 【转】
    七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 【转】
  • 原文地址:https://www.cnblogs.com/zcynine/p/5010537.html
Copyright © 2011-2022 走看看