el-input添加mousedown事件,并且在鼠标按下的时候取消全部选中

        我们的需求中有这么两项:

        1、当el-input出现的时候自动获取焦点,并且让里面的内容全选;

        2、但是在鼠标按下时候,取消对内容全选。让用户可以自己勾选;

        第一个需求其实比较简单, 就是当页面出现的时候,让el-input获取焦点,并且在获取焦点的时候,触发input的获取焦点事件,在获取焦点事件中自动全选内容;

        第二个需求,需要在el-input中添加mousedown事件,但是如果直接使用@mousedown会导致el-input不能触发鼠标按下的事件。需要使用`@mousedown.nactive`

        还有一个是取消文字的全选,我去网上找,都是让其中的内容全选, 取消全选是没有一个unselect方法的。直到看到了input的方法中还有一个这样的setSelectionRange方法。可以使用这个方法让内容取消选中。(注意:这里是鼠标按下的时候取消全选,如果是鼠标按下并且抬起就不用使用这个方法了,因为input会自动的取消全选

        HTMLInputElement.setSelectionRange 方法用于设定<input> 或 <textarea> 元素中当前选中文本的起始和结束位置。

<div class="cpoyAddressDom" v-show="isShowCopyAddressDom">
  <el-input
    v-model="routerAddress"
    ref="routerAddressInput"
    @focus="routerAddressFocus"
    @blur="routerAddressBlur"
    @keyup.enter="enterKeyup"
    @mousedown.nactive="inputMouseDown"
  />
</div>




methods: {
    // 输入框鼠标按下,直接是去焦点
    inputMouseDown(e){
      e.currentTarget.setSelectionRange(0,0);
    },
    // 点击地址栏,让输入框显示,并且获取焦点
    showCopyAddressDom() {
      this.isShowCopyAddressDom = true;
      this.$refs.routerAddressInput.focus();
    },
    // 获取焦点的时候,自动选中
    routerAddressFocus(e) {
      e.currentTarget.select();
    },
    // 失去焦点,让输入框隐藏
    routerAddressBlur() {
      this.isShowCopyAddressDom = false;
      this.getRouterAddress();
    },
}

​

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值