首頁  >  文章  >  web前端  >  JS實作動態生成表格並提交表格資料向後端_javascript技巧

JS實作動態生成表格並提交表格資料向後端_javascript技巧

WBOY
WBOY原創
2016-05-16 15:17:302171瀏覽

本文實例介紹了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++;   
  }

我們可以看到在標籤中我們加入了標籤,主要是用來提供使用者輸入參數, 而全域變數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=xxx

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+="]";
//最终msg的值就被转换为:[{"key":"value";"key":"value"},{"key":"value";"key":"value"}]格式的json数据<br />

透過上述程式碼,我們已經成功的將表格中的多條數據轉換成了json格式的數據,那麼我們就可以透過ajax的方式將Json數據發送到後台處理。

至此,我們取得表格中的多個資料並提交至伺服器的程式碼就寫完了,希望對大家的學習有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn