歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

用 jQuery編寫的可編輯的表格

1、     思路

首先實現隔行換色的效果

當點擊想要修改的列時,創建文本框

當點擊 enter時提交數據,當點擊esc返回的鍵時,取消輸入的內容

2.代碼解析

    Html代碼 :

    <body>

    <div align="center">

        <h1>

           顯示員工界面

        </h1>

       <table>

           <thead>

              <tr>

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

                  <td>序號 </td>

                  <td>姓名</td>

                  <td>性別</td>

                  <td>年齡</td>

                  <td>出生日期</td>

                  <td>薪資</td>

                  <td>部門</td>

              </tr>

           </thead>

           <tbody>

              <tr>

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

                  <td >1</td>

                  <td>老王</td>

                  <td>女</td>

                  <td>23</td>

                  <td>5435343</td>

                  <td>10000</td>

                  <td>河軟</td>

              </tr>

              <tr>

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

                  <td>1</td>

                  <td>老王</td>

                  <td>女</td>

                  <td>23</td>

                  <td>5435343</td>

                  <td>10000</td>

                  <td>河軟</td>

              </tr>

              <tr>

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

                  <td>1</td>

                  <td>老王</td>

                  <td>女</td>

                  <td>23</td>

                  <td>5435343</td>

                  <td>10000</td>

                  <td>河軟</td>

              </tr>

           </tbody>

       </table>

    </div>

  </body>

 

Js代碼為:

    $(document).ready(function(){

      

       //實現隔行變色的效果

       //首先獲取tbody中的所有的tr,然後采用:even選擇出奇數行的所有的特點,但是返回的是偶數行

       $("tbody>tr:even").css("background-color","pink");

       ///功能一樣,是偶數行,實際是奇數行

       $("tbody>tr:odd").css("background-color","#BEBEBE");

       //當點擊tbody中的td時,能夠把td中的內容替換成一個text框,進行修改

       //點擊enter  能夠提交數據  點擊esc鍵撤銷修改

 

       //獲取所有的tr,並注冊事件,因為在遍歷的時候序號不可編輯,所以序號這一列不能編輯

       $("tbody tr").each(function(index,dom){

           //通過dom得到所有的tr,判斷tr中的td如果是>2的才可以編輯

           $(dom).children("td:gt(1)").click(function(){

              //獲取td的jQuery對象

              var $td = $(this);//注意得到td的jQuery的對象的時候用的是this,也就是點擊哪個獲取哪個,如果用的是dom,得到的是整行。

             

              //得到文本框內容

              var tdText = $td.text();  //text  取得所有匹配元素的內容。

             

              //判斷如果已經創建了input,就不在創建了,如果沒有創建,在創建,是通過判斷孩子節點

              if($td.children("input").length>0){

                  return false;

              }

                 

              //清空td中的文本

              $td.html("");  //設置每一個匹配元素的html內容       

 

              //創建可編輯的input

              var $input = $("<input type='text'/>");

              $input.css("background-color",$td.css("background-color"));//設置input的框元素和td中的顏色相同

              $input.css("width",$td.width());//寬度和td的寬度相同

              $input.css("border-width",0);//文本框的邊框為0

             

              //在得到文本框的同時得到文本框以前的內容

              $input.val(tdText);  //獲得第一個匹配元素的當前值。

             

              //把創建的input放到td中

              $td.append($input);

             

              //當觸發td的鍵盤事件的時候,如果點enter鍵,保存,如果點esc,取消輸入的內容   

              $td.keyup(function(event){

                  //獲取鍵盤按下的事件

                  var key = event.which;

                  //alert(key);

                  if (key == 13) {

                     $td.html($input.val());//得到文本框的值並放到td中

                  }else if(key==27){

                     $td.html(tdText);

                  }

              });

           });

       });

    });

 

3.總結

在這裡我大概總結一下text(),val(),html()的區別,因為在這個例子之間,反復用到了這幾個屬性

    html():取得第一個匹配元素的html內容。這個函數不能用於XML文檔。但可以用於XHTML文檔。

    html(val):設置每一個匹配元素的html內容

val():獲得第一個匹配元素的當前值。

val(val): 設置每一個匹配元素的值。

text():取得所有匹配元素的內容。

text(val): 設置所有匹配元素的文本內容

 

 效果圖為:

Copyright © Linux教程網 All Rights Reserved