zoukankan      html  css  js  c++  java
  • JS实现动态生成表格并提交表格数据向后端 表格中数据转为json

    原文地址

    需求:在web页面上动态的生成表格,并可以对表格中的数据进行编辑,然后把表格中的数据提交至后端服务器保存。

    首先动态生成表格。

    1.首先我们需要导入JS库文件。jQuery

    2.然后在页面div中事先创建一个空白表格,可以根据需求而定,我这里是一个带表头的表格

    <table border="0" style="text-align: center;" width="100%" id="myTable">
     <tr>
      <td width="150px;">表头1</td>
      <td width="150px;">表头2</td>
      <td width="150px;">表头3</td>
      <td width="150px;">表头4</td>
      <td width="150px;">表头5</td>
      <td width="150px;">操作</td>
     </tr>
    </table>
    

    3.表格创建好后,我们就可以写动态生成表格的关键代码了。我们写一个js方法供触发使用

    var num = 0;
      function addTable(){
        var tableHtml ="";
        tableHtml += '<tr id="tr'+num+'">'
             +'<td><input class="addtd" id="cnashu1'+num+'" style="150px;" type="text" name="cnashu1" /></td>'
             +'<td><input class="addtd" id="cnashu2'+num+'" style="150px;" type="text" name="cnashu2"/></td>'
             +'<td><input class="addtd" id="cnashu3'+num+'" style="150px;" type="text" name="cnashu3"/></td>'
             +'<td><input class="addtd" id="cnashu4'+num+'" style="150px;" type="text" name="cnashu4"/></td>'
             +'<td><input class="addtd" id="cnashu5'+num+'" style="150px;" type="text" name="cnashu5"/></td>'
             +'<td><a style="cursor: pointer; color: blue;" onclick="removeTr('+num+')">删除</a>'
               +'<a id="edit'+num+'" class="edit" style="cursor: pointer; color: blue;" onclick="editDataByOne('+num+')">修改</a>'
               +'<a id="save'+num+'" class="hide" style="cursor: pointer; color: blue;" onclick="saveByOne('+num+')">保存</a>'
             +'</td>'
             +'</tr>';
        
        var elements = $("#myTable").children().length;  //表示id为“mtTable”的标签下的子标签的个数
        
        $("#myTable").children().eq(elements - 1).after(tableHtml); //在表头之后添加空白行
        num++;   
      }
    

      我们可以看到在<tb>标签中我们添加了<input>标签,主要是用来提供用户输入参数, 而全局变量num,主要是用来区分每一个添加的参数的id的唯一性而存在的。

    4.接下来我们对表格进行操作

    //删除行
    function removeTr(trNum){
      $("#tr"+trNum).remove();
    }
    //编辑行
    function editDataByOne(trNum){
      $this = $("#tr"+trNum);
      $(".addtd",$this).removeAttr("readonly");
    }
    //保存行
    function saveByOne(trNum){
      $this = $("#tr"+trNum);
      $(".addtd",$this).attr("readonly","readonly");
    }
    

      

    上面我们对表格进行了删除,编辑,保存等操作,具体操作内容可以根据需求调整。(其实后来我发现可以不需要全局num,也可以实现对添加行的操作,至于怎么实现,主要是一些js的操作,有空再研究吧)

    至此,我们动态生成表格的页面代码就完结了。
    上半篇我们讲到了如何动态生成表格,接下来我们就讲一下如何获取表格中的多条数据,并提交至后台服务器

    在开发之前我也在网上找了一些资料,要么太简洁,要么看不懂,但是他们大多数都提到了使用Json的方式将多个参数传入后台,那么我就根据这个思路编写了如下的代码。

    1.首先我们来看一下如何获得表格中的数据,还是结合上边的例子

    <div>
      <form id="submitForm">
        <table border="0" style="text-align: center;" width="100%" id="myTable">
          <tr>
            <td width="150px;">表头1</td>
            <td width="150px;">表头2</td>
            <td width="120px;">表头3</td>
            <td width="120px;">表头4</td>
            <td width="80px;">表头5</td>
            <td width="100px;">操作</td>
          </tr>
        </table>
       </form>
       <input type="button" value="添加" onclick="addTable();">
       <input type="button" value="提交" onclick="save();">
     </div>
    

    2.接下来我们根据jQuery的“serialize()”方法获取表格中input标签的参数

    var msg = $("#submitForm").serialize();  //获得后的msg的值:canshu1=xxx&canshu2=xxx&canshu3=xxx&canshu4=xxx&canshu5=xx
    

    3.拿到表格中的数据后,我们根据它值的形式把它转换成json格式的数据

    var json = "[{";
    var msg2 = msg.split("&");   //先以“&”符号进行分割,得到一个key=value形式的数组
    var t = false;
    for(var i = 0; i<msg2.length; i++){
      var msg3 = msg2[i].split("=");  //再以“=”进行分割,得到key,value形式的数组
      for(var j = 0; j<msg3.length; j++){
        json+="""+msg3[j]+""";
        if(j+1 != msg3.length){
          json+=":";
        }
        if(t){
          json+="}";
          if(i+1 != msg2.length){  //表示是否到了当前行的最后一列
            json+=",{";
          }
          t=false;
        }
        if(msg3[j] == "canshu5"){  //这里的“canshu5”是你的表格的最后一列的input标签的name值,表示是否到了当前行的最后一个input
          t = true;
        }
      }
      if(!msg2[i].match("canshu5")){  //同上
        json+=";";
      }
              
    }
    json+="]";
    

      通过上述代码,我们已经成功的将表格中的多条数据转换成了json格式的数据,那么我们就可以通过ajax的方式将Json数据发送到后台处理。

  • 相关阅读:
    《Java数据结构与算法》笔记-CH4-5不带计数字段的循环队列
    《Java数据结构与算法》笔记-CH4-4循环队列
    效率方案:快速切换联调、测试、正式环境
    redis 安装、配置与测试
    计算机科学中的圣经
    自建主机
    正则表达式学习入门
    数据库查询语句缺失部分索引,引起的问题(20170209)
    redis 经验、问题以及其解决方案
    资讯周刊---20170210
  • 原文地址:https://www.cnblogs.com/GetLastError/p/7773261.html
Copyright © 2011-2022 走看看