如何用vue把写好的一些标签往el-input里面放 要求一定标签放在input输入框焦点光标内,
时间: 2023-11-07 15:19:43 浏览: 131
你可以使用 Vue 的插值表达式和模板语法来实现在 input 输入框焦点光标内放置标签的需求。具体实现步骤如下:
1. 在 Vue 的 data() 函数中定义一个字符串类型的变量,用于存储 input 输入框中的内容。
2. 在 input 标签中使用 v-model 指令将 input 的值绑定到 data() 中定义的变量上。
3. 在 input 标签后面添加一个 span 标签,用于显示要插入的标签。
4. 使用 @click 事件监听器绑定一个函数,用于将要插入的标签插入到 input 输入框中,并设置光标位置。
5. 在绑定的函数中,使用 document.execCommand() 方法将标签插入到 input 输入框中,使用 Selection 对象设置光标位置。
下面是一个简单的示例代码:
```
<template>
<div>
<div>
<label>输入框:</label>
<el-input v-model="inputValue" ref="input"></el-input>
<span @click="insertTag">@{{ tag }}</span>
</div>
</div>
</template>
<script>
export default {
data() {
return {
inputValue: '',
tag: '<strong></strong>'
}
},
methods: {
insertTag() {
let input = this.$refs.input.$refs.input
let startPos = input.selectionStart
let endPos = input.selectionEnd
let sel = window.getSelection()
let range = document.createRange()
input.focus()
document.execCommand('insertHTML', false, this.tag)
range.setStart(input, startPos + 8)
range.setEnd(input, startPos + 8)
sel.removeAllRanges()
sel.addRange(range)
}
}
}
</script>
```
在上面的代码中,我们使用了 element-ui 的 el-input 组件,通过 v-model 指令将 input 的值绑定到 inputValue 变量上。在 input 后面添加了一个 span 标签,用于显示要插入的标签。在 span 标签上使用 @click 事件监听器绑定了 insertTag() 函数,该函数用于将标签插入到 input 输入框中,并设置光标位置。
在 insertTag() 函数中,我们首先获取了 input 输入框的 DOM 对象,并获取了光标位置。然后使用 document.execCommand() 方法将标签插入到 input 输入框中,最后使用 Selection 对象设置光标位置。需要注意的是,由于插入的是带标签的 HTML 代码,所以需要将光标位置进行相应的调整。
阅读全文