Element UI 带快捷编辑的多行输入框(含光标位置的获取和指定)

简介: Element UI 带快捷编辑的多行输入框(含光标位置的获取和指定)

光标位置的获取和指定详见代码中的注释

<template>
  <div style="padding: 30px">
    <el-form ref="formRef" :model="formData" label-width="80px" size="mini">
      <el-form-item label="内容:" style="width: 600px" prop="content">
        <el-input
          id="contentID"
          v-model="formData.content"
          type="textarea"
          :rows="3"
        ></el-input>
        <el-tag
          @click="shortEdit(item.value)"
          class="tagStyle"
          v-for="(item, index) in btnList"
          :key="'btn' + index"
          >{{ item.value }}</el-tag
        >
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      formData: {},
      btnList: [
        {
          value: "+",
        },
        {
          value: "-",
        },
        {
          value: "*",
        },
        {
          value: "/",
        },
        {
          value: "=",
        },
      ],
    };
  },

  methods: {
    shortEdit(val) {
      let contentDom = document.getElementById("contentID");
      // 获取光标选区的起始下标
      let startPos = contentDom.selectionStart;
      // 获取光标选区的结束下标
      let endPos = contentDom.selectionEnd;
      let oldContent = contentDom.value;
      // 用快捷编辑的内容替换光标选区中的内容
      let newContent =
        oldContent.substring(0, startPos) + val + oldContent.substring(endPos);
      contentDom.value = newContent;
      // 让输入框重新获得焦点
      contentDom.focus();
      // 替换内容后,新的光标选区的起始下标
      let newStartPos = startPos + val.length;
      // 设置新的光标位置(无选区时,起始下标 = 结束下标)
      contentDom.setSelectionRange(newStartPos, newStartPos);
    },
  },
};
</script>
<style scoped>
.tagStyle {
  margin: 10px 10px;
  cursor: pointer;
}
</style>
目录
相关文章
|
3天前
Element UI【级联选择器】el-cascader 获取选中内容的 label 数据,鼠标悬浮显示超长内容
Element UI【级联选择器】el-cascader 获取选中内容的 label 数据,鼠标悬浮显示超长内容
12 3
|
2天前
|
数据安全/隐私保护
Element UI 密码输入框--可切换显示隐藏,自定义图标
Element UI 密码输入框--可切换显示隐藏,自定义图标
7 0
|
2天前
Element UI 表格【列宽自适应】
Element UI 表格【列宽自适应】
4 0
|
2天前
|
前端开发
ElementPlus卡片如何能够一行呈四,黑马UI前端布局视频资料,element样式具体的细节无法修改,F12找到那个位置,可能在其他组件写了错误,找到那个位置,围绕着位置解决问题最快了,卡片下边
ElementPlus卡片如何能够一行呈四,黑马UI前端布局视频资料,element样式具体的细节无法修改,F12找到那个位置,可能在其他组件写了错误,找到那个位置,围绕着位置解决问题最快了,卡片下边
|
2天前
Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑
Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑
6 0
|
2月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
2月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
|
2月前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍
|
2月前
|
JSON 前端开发 测试技术
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版