实现一个复制input框中文本内容的功能

19 篇文章 0 订阅

一、场景

有时候,有些项目需要在表单中显示一些数据,但是这些数据是禁止编辑的,但是我们可能还需要在其他的地方去使用输入框中的数据,为了更好的提升用户体验感,此时一个复制该框中文本内容的功能就显得尤为重要。效果如下:在这里插入图片描述

在这里插入图片描述

二、如何去实现

我们知道ref 的基本用法是获取DOM元素,因此我们可以通过ref来获取想要操作的DOM元素,代码如下:

1、先声明inputRef这个ref类型
const inputRef = useRef<any>(null) //ts类型的声明
const inputRef = useRef()  //js类型的声明
2、通过ref获取DOM元素
 <Form.Item
                label="推送接口"
                name="sendInterface"
                className="api-form"
              >
                <Input
                  ref={inputRef}
                  disabled={true}
                  className="sendInterface"
                  addonAfter={
                    <a onClick={handleCopyClick}>
                      <AiIcon
                        type="#iconcopy"
                        color="#666666"
                        width={16}
                        height={16}
                        style={{ margin: '0 2px' }}
                      />
                    </a>
                  }
                />
              </Form.Item>
3、注册点击事件,并通过文档对象提供的一个execCommand方法获取到复制的内容,然后通过message.success提示复制成功.
message需要先引入,如下:
import {
  message,
} from 'antd';
const handleCopyClick = () => {
    //在选择节点的时候,一定要只选择input
    var copyDOM = document.querySelector('.sendInterface') //需要复制文字的节点
    var range = document.createRange() //创建一个range
    window.getSelection().removeAllRanges() //清楚页面中已有的selection
    range.selectNode(copyDOM) // 选中需要复制的节点
    window.getSelection().addRange(range) // 执行选中元素
    var successful = document.execCommand('copy') // 执行 copy 操作
    if (successful) {
      message.success('复制成功!')
    } else {
      message.warning('复制失败!')
    }
    // 移除选中的元素
    window.getSelection().removeAllRanges()
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值