html,css,jQuery,前端如何实现table单列复制

html,css,jQuery,前端如何实现table单列复制

我本来是一个快乐的小前端,每天过着无忧无虑的生活,直到有天产品给我提了个需求。。。

这表格为什么不可以单列复制呢,excel都可以,你给我整个。

那就整呗。
效果图:下边控制台是我ctrl+v显示的内容
表格自由选中复制
表格自由选中复制

接下来分享一下是怎么实现的
先百度,再复制粘贴,找找思路,看到有篇文章提到可以用css的user-select属性,结合js来控制节点是否可选中,我寻思着,此法应该可行,整吧那就!干

// 1.先设置td样式,使td默认不可选中
td {
	-webkit-user-select: none; /* Safari */
 	-ms-user-select: none; /* IE 10+ and Edge */
 	user-select: none; /* Standard syntax */
}
//另一个样式是选中后的样式
.select_td{
	cursor: crosshair;
	border: 1px #b1b1b1 solid;
	-webkit-user-select: auto;
 	-ms-user-select: auto; /* IE 10+ and Edge */
 	user-select: auto; /* Standard syntax */
}

引入上面的样式后,我们的表格就不会被选中啦~~
html

<table class="ex_tabinf" cellpadding="0" width="100%">
    <tr>
        <th width="25%"> 姓名 </th>
        <th width="25%"> 性别 </th>
        <th width="25%;"> 年龄 </th>
        <th width="25%;"> 职业 </th>
    </tr>
    <tr>
        <td> 张三 </td>
        <td></td>
        <td> 30 </td>
        <td> 律师 </td>
    </tr>
    <tr>
        <td> 孙悟空 </td>
        <td></td>
        <td> 503 </td>
        <td> 打野 </td>
    </tr>
    <tr>
        <td> 孙尚香 </td>
        <td></td>
        <td> 24 </td>
        <td> 射手 </td>
    </tr>
    <tr>
        <td> 孙策 </td>
        <td></td>
        <td> 26 </td>
        <td> 船夫 </td>
    </tr>
</table>

js,jquery

	//表格自由选中
	var isSelect = false;   //鼠标是否处于选择状态
	$jq("td").on('mousedown', function () {
		isSelect = true;
		window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();  //1先清除掉选中的
		$jq('.select_td').removeClass('select_td'); //2移除已存在的选中样式
		$jq(this).addClass('select_td');//添加新的选中样式
	})
	$jq("td").on('mousemove', function () {
		if (isSelect) {
			$jq(this).addClass('select_td');
		}
	})

    $jq(document).on('click', function () {
        if (!isSelect) {
            isSelect = false;
            $jq('.select_td').removeClass('select_td');
        }
        setTimeout(() => {
            isSelect = false;
        }, 10)
    })

有个需要注意的地方,从user-select为none的元素之外的地方开始选中,若经过了此元素,从视图上看到此元素的内容是没有被选中的,但是复制之后,粘贴到微信聊天或者excel依然会显示 设置了none的元素的 内容,粘贴到谷歌浏览器的控制台,或着粘贴到记事本上则会正常显示,只显示我们选中的复制的内容,这情况我没搞明白原因,有没有大佬知道的,虚(na)心(lai)请(ba)教(ni),不过如果不用复制ctrl+c,而用剪切ctrl+x的话,就都很正常,只会显示选中的内容。

我的快乐,会回来的~~

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值