业务场景

在输入数据时,我们有时希望从模板选择内容,插入数据到光标的位置,如果通过Vue直接处理这个没有办法。解决办法,是通过文本框的属性找到光标的位置,插入内容,并赋值。

代码实现

insertContent(vue){
    //这个是通过控件,找到控件的HTML dom,对象,找到文本框。
    const myField = this.$refs.opinionArea.$el.querySelector("textarea");

    if(myField.selectionStart || myField.selectionStart === 0) {
        let startPos = myField.selectionStart;
        let endPos = myField.selectionEnd;
        //插入内容
        let content= myField.value.substring(0, startPos) + value
        + myField.value.substring(endPos, myField.value.length);
        this.$set(this.localData,'opinion',content);
        await this.$nextTick() // 这句是重点, 圈起来
        myField.focus();
        myField.setSelectionRange(endPos + value.length, endPos + value.length);
    } 
    else {
        this.$set(this.localData,'opinion',value);
    }
}
文档更新时间: 2021-11-26 11:58   作者:zyg