vue在光标处插入文字

例子

如何在点击添加按钮的时候,插入【客人姓名】等文字


微信截图_20240815103418.png

思路

通过e.srcElement.selectionStart记录光标位置,然后通过slice截取拼接字符串

<el-collapse-item title="指令格式设置" name="2">
   <el-form-item label="指令数据项">
    <el-select v-model.trim="dictKey" placeholder="请选择指令数据项" class='dish-input'>
      <el-option
        v-for="item in dictKeyList"
        :key="item.key"
        :label="item.value"
        :value="item.key"
      ></el-option>
    </el-select>
                            
    <el-button type="primary" @click="addTemplateKey">添加</el-button>
        <el-button type="primary" plain @click="clearSearch">预览</el-button>
    </el-form-item>
     <el-form-item label="">
      <el-input
         style="width: 900px"
         type="textarea"
         :rows="2"
         placeholder="请输入内容"
         v-model="form.content"
         @blur="contentBlur"
        >
      </el-input>
   </el-form-item>
 </el-collapse-item>

this.contentIndex是定义在data中
在methond中

contentBlur(e){
  this.contentIndex = e.srcElement.selectionStart;
},
addTemplateKey(){
  const keyObj = this.dictKeyList.find(item => item.key === this.dictKey);
  let dictName = '[' + keyObj.value + ']';
  if(this.form.content){
    let index = this.contentIndex;
    let name = this.form.content;
    this.form.content = name.slice(0,index) + dictName + name.slice(index);
  }else {
    this.form.content = dictName;
  }
},
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容