實現的就是這樣的乙個效果,從excel或number複製好多行資料後,直接在table起始單元格按下c+v,**資料立馬就齊刷刷站好位了!強迫症表示看著好爽感!
簡單到不行的原理:給**元素繫結貼上事件,做到這四件事就可以啦(案例**依賴jquery框架):
消除預設貼上事件
e.preventdefault();
獲取貼上板上的資料
var data = null;
var clipboarddata = window.clipboarddata || e.originalevent.clipboarddata; // ie || chrome
data = clipboarddata.getdata('text');
複製出來的資料是用製表符\t和換行符\n隔開的資料,顯示出來是帶空格的一系列字串,如果在除錯時想要清楚的檢視帶\t,\n的字串,可以把字串\t\n替換成成\\t \\n:通過製表符和換行符解析資料,先通過換行符將不同行陣列分開成陣列,再把每個單元格資料通過製表符分開,同樣構造成陣列。
//解析資料
var arr = data.split('\n')
.filter(function(item) ).map(function(item) );
//最終資料模式
[ [a0,a1,a2],//row1
[b0,b1,b2],//row2
[c0,c1,c2],//row3
]
把解析好的資料放在相應單元格
var tab = this; //**dom
var td = $(e.target).parents('td'); //起始單元格
var startrow = td.parents('tr')[0].rowindex; //起始單元格行數
var startcell = td[0].cellindex; //起始單元格列數
var rows = tab.rows.length; //總行數
for (var i = 0; i < arr.length && startrow + i < rows; i++)
}
需要注意的是在進行行或列的迴圈時,除了判斷迴圈數i/j小於複製資料的行/列數外,還要判斷當前所在行/列是否小於**的總行/列數;最終實現的**如下:
$('table').bind('paste', function(e) ).map(function(item) );
//輸出至網頁**
var tab = this; //**dom
var td = $(e.target).parents('td');
var startrow = td.parents('tr')[0].rowindex;
var startcell = td[0].cellindex;
var rows = tab.rows.length; //總行數
for (var i = 0; i < arr.length && startrow + i < rows; i++)
}});
只要把這一段綁在**上,就可以華麗麗的實現多單元格複製啦~不過因為table單元格內的dom結構會有所差異,所以在迴圈內給單元格賦值時要留意下有沒有問題。 html Table實現表頭固定
最近一直在搞前台瑣碎的東西,也學習了一下linux,沒有時間對新的東西進行深入的研究和學習,沒有寫部落格,不過歸咎其原因還是在於自己的惰怠。廢話不多說,今天想將乙個前台頁面設計的乙個小東西分享一下,那就是平時我們設計 的時候,通常都想將 的頭部進行固定,而 的body部分能夠進行滾動的效果,其實這個...
HTML table使用詳解
對於table來說,在一些小的模組中進行 布局是非常好用的。我們可以這樣來理解table,主要分成table部分和td部分。table部分 主要是來控制外邊框的 就是最外面一層邊框,不包括裡面部分 它擁有的屬性為 margin屬性,border屬性,cellspacing屬性,規定單元格之間的空白c...
HTML table使用總結
在html中,使用table標籤來建立乙個 在table標籤中使用tr來表示 中的一行,有幾行就有幾個tr 在tr中需要使用td來建立乙個單元格,有幾個單元格就有幾個td。rowspan用來設定縱向的合併單元格,colspan用來設定橫向的合併單元格。使用場景 有一些情況下 是非常的長的,這時就需要...