本文实例介绍了JS实现动态生成表格并向后端提交表格数据的相关代码,分享给大家供大家参考,具体内容如下

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

那么我们首先需要解决的是动态生成表格的问题

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

<script src=          "../js/jqui/jquery/jquery-1.5.2.min.js"           type=          "text/javascript"          ></script>

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="width:150px;" type="text" name="cnashu1" /></td>'         
               +          '<td><input class="addtd" id="cnashu2'          +num+          '" style="width:150px;" type="text" name="cnashu2"/></td>'         
             +          '<td><input class="addtd" id="cnashu3'          +num+          '" style="width:150px;" type="text" name="cnashu3"/></td>'         
                    +          '<td><input class="addtd" id="cnashu4'          +num+          '" style="width:150px;" type="text" name="cnashu4"/></td>'         
             +          '<td><input class="addtd" id="cnashu5'          +num+          '" style="width: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          >

我们可以看到在Table标签的外层我们加了一层form标签,并设置form标签的id。

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+=          ",{"          ;         
               }         
                   }         
            if          (msg3[j] ==           "canshu5"          ){            //这里的“canshu5”是你的表格的最后一列的input标签的name值,表示是否到了当前行的最后一个input         
             t =           true          ;         
                    }         
            }         
           if          (!msg2[i].match(          "canshu5"          )){            //同上         
          json+=          ";"          ;         
                    }         
     }         
       json+=          "]"          ;         

          //最终msg的值就被转换为:[{"key":"value";"key":"value"},{"key":"value";"key":"value"}]格式的json数据<br>

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

至此,我们获取表格中的多条数据并提交至服务器的代码就编写完了,希望对大家的学习有所帮助。