2012-03-10 39 views
0

如何将你喜欢这个<tr><td>cell 1</td><td>cell 2</td></tr> <tr><td>cell 3</td></td>cell 4</td></tr>多行数据复制到用户的剪贴板,准备在Excel中粘贴(一个<td>对将去到Excel中一个单元)单击链接将可见行复制到用户的剪贴板缓冲区中?

我想到的是这样的:

$('#copy').click(function(){ 
    var data = $('datatable tr:visible').text(); 
    alert("you have copied these data: " + data + "now you can paste them in Excel"); 
}); 

警报框中的数据变量没有任何内容。这里几乎卡住了..

回答

2

如果你想在Excel中粘贴数据,你可能需要在不同行中的每一行,每一列由标签分隔。例如:在jsFiddle

var rows = [] 
$('datatable tr:visible').each(function() { 
    var columns = []; 
    $(this).children("td").each(function() { 
     columns.push($(this).text()); 
    }); 
    rows.push(columns.join("\t"); 
}); 
var data = rows.join("\n"); 

工作实施例(改编自OP码)

至于复制到clipboad,见this question获取更多信息。

更新:从浏览器复制到剪贴板是一个复杂且可能不安全的操作,并且AFAIK在浏览器和操作系统之间无法一致地工作。也许最好是将文本放在textarea中,选中并请求用户Ctrl+C它。但这取决于你。

+0

这是我第一次使用这个小提琴:[link] http://jsfiddle.net/DXjft/2/没有什么事情发生.. – user666923 2012-03-10 20:31:55

+0

新的:[链接] http://jsfiddle.net/DXjft/4/ – user666923 2012-03-10 20:34:59

+0

1.没有'datatable',只是'table'(*编辑:*在第一个小提琴中,我看你把它固定在第二个); 2.不要使用'tr> td',你在迭代外循环中的行; 3.没有'#testing','append'与html一起使用,而不是文本; 4.我相信'clipboardData'只能在IE中使用。请参阅[this](http://jsfiddle.net/mgibsonbr/DXjft/5/)以获得更贴近实际的示例。 – mgibsonbr 2012-03-10 20:39:51