我一直在try 将表情符号插入到文本区域中光标所在的位置.我在网上搜索了大约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;
    }

显然,这段代码将把字符(在我的例子中是emoji)添加到字符串的最后一个.我需要一个纯vuejs解决方案.

推荐答案

两个步骤:

1.使用vue方式获取textarea个元素:

1.1将ref属性添加到模板代码中的textarea标记:

<textarea ref="ta"></textarea>

1.2在该部件的mounted钩之后获取该元件:

let textarea = this.$refs.ta

2获取textarea个元素的光标位置.

let cursorPosition = textarea.selectionStart

这是参考资料:ref

Vue.js相关问答推荐

Nuxt 3中间件在部署到Netliy时基于IP国家代码的重定向不起作用

Vue3:如何在功能组件中重用插槽vnode

无法从CDN使用Vue和PrimeVue呈现DataTable

VueI18n 无法读取或更改组合 API 中的区域设置

为什么发送 POST API 请求时主体对象没有react ?

nuxt.js auth 始终重定向到登录,而不是允许转到带有 auth: false 的页面,

如何使用 vuejs 在浏览器 url 中获取当前 product.id 的详细信息

如何将字符串中的
解析为 VUE.js 中的 html 标记

如何将 vuejs 项目部署到 heroku

如何在 Vue.js 中获取完整的当前日期和时间,而无需编写大量 JavaScript 行

vuejs中watch方法和计算方法有什么区别

如何将 vue.js 与 gulp 一起使用?

如何在 vuejs 中异步加载图像 src url?

如何在 Vue 中动态创建组件上获取更新的 $refs?

加载时焦点文本框上的 Vue.js

如何从 vue 组件调用 App.vue 中的方法

在 nuxt.js 页面中包含外部 javascript 文件

偶数行格式化

vue 未在实例上定义,但在渲染期间引用

隐藏特定标题及其在 vuetify 数据表中的对应列