VUE3+Element-Plus+TS el-input固定显示几行,内容超长失去焦点显示省略号,获取到焦点显示完整内容

需求是实现el-input固定:rows=5,在正常内容超长的情况下显示省略号,并且鼠标放在上面是显示tooltip,点击获取到焦点时显示完整内容。

以下是具体实现方式:

        (1)el-input外边套一个el-tooltip

        (2)内容通过css控制超长显示省略号,失去焦点时使css生效,获取到焦点时使css失效显示完整内容。

html代码:

<el-form-item label="备注:" prop="feeDetremarks">
  <el-tooltip
    class="box-item"
    effect="dark"
    placement="top-start"
    :disabled="feeDetremarksInputClass">
    <template #content>
      <div style="width: 100%">{{ basicInfoFormModel.feeDetremarks }}</div>
    </template>
    <el-input
      v-model="basicInfoFormModel.feeDetremarks"
      :readonly="basicInfoFormModel.currentApprovalNode != '00'"
      type="textarea"
      resize="none"
      :rows="5"
      @focus="feeDetremarksInputGetFocusMethod"
      @blur="feeDetremarksInputGetBlurMethod"
      ref="feeDetremarksRef"
      id="feeDetremarkstextareaid"
      :class="
        feeDetremarksInputClass ? '' : 'input-content-break-class'
      "></el-input>
  </el-tooltip>
</el-form-item>

        (3) 并且失去焦点的时候记录下输入框内滚动的距离,在失去焦点时才能回到顶端,并且使css生效.

ts代码:

/**
 *  备注输入框获取到焦点时触发该方法
 */
const feeDetremarksInputGetFocusMethod = () => {
  feeDetremarksInputClass.value = true;
  if (feeDetremarksRef.value) {
    scrollVal.value = feeDetremarksRef.value.ownerDocument.body.scrollTop;
  }
};

/**
 *  备注输入框获取到焦点时触发该方法
 */
const feeDetremarksInputGetBlurMethod = () => {
  feeDetremarksInputClass.value = false;
  if (typeof scrollVal.value === "number") {
    window.scroll(0, scrollVal.value);
  }
  nextTick(() => {
    setTimeout(() => {
      const textarea = document.getElementById("feeDetremarkstextareaid");
      textarea?.scroll(0, scrollVal.value);
    }, 13);
  });
};

        (4)记得css代码需要使用穿透

 css代码:

.input-content-break-class {
    :deep(.el-textarea__inner) {
      width: 100%;
      overflow: hidden;
      text-overflow: ellipsis;
      display: -webkit-box;
      -webkit-line-clamp: 5;
      -webkit-box-orient: vertical;
    }
  }

以上是相关代码,没写详细请随便问!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值