我一直在尝试在光标所在的文本区域中准确插入表情符号。我环顾四周 how tos
在网上找不到 VUE JS 中的任何特定内容。他们中的大多数都是纯 JS。
我有这个代码
<div class="picker" v-show="showPicker">
<click-outside :handler="handleClickOutside">
<picker
set ="messenger"
title="Pick your emoji…"
emoji="point_up"
@click="addEmoji"
:emoji-size="16"
>
</picker>
</click-outside>
</div>
<textarea id="greeting_text_input" class="form-control"
type="text"
v-model="greeting_text"
rows="8"
required
placeholder="Hi {first-name}! Welcome to our bot. Click on the ‘Get
Started’ button to begin
">
</textarea>
我的方法
addEmoji(emoji){
this.greeting_text += emoji.native;
this.showPicker = !this.showPicker;
}
显然,这段代码会将字符(在我的例子中是表情符号)添加到字符串的最后。为此,我需要一个纯 vuejs 解决方案。 Vue 中此类问题的最佳实践是什么?因为网络上很少有基于 vanilla JS 或 Jquery 的解决方案。
原文由 Prajwol Onta 发布,翻译遵循 CC BY-SA 4.0 许可协议
两个步骤:
1 使用 vue 方式获取
textarea
元素:1.1 添加
ref
属性到模板代码中的textarea
标签:1.2 在这个组件的
mounted
钩子之后得到这个元素:2 获取
textarea
元素的光标位置。这是参考: 参考