Vue input textarea输入框通过光标位置插入想要的值

先看一下问题

Vue input textarea输入框通过光标位置插入想要的值_第1张图片

textarea的代码

 

动态button,可以传输不同的值:

 

获取光标函数:

function getPositionForTextArea(ctrl){
  let CaretPos = 0;
  if(ctrl.selectionStart || ctrl.selectionStart == '0'){// Firefox support
    CaretPos = ctrl.selectionStart;
  }
  // console.log(CaretPos);
  return CaretPos;
}

export {
  getPositionForTextArea
}

注意,在vue里面的input和html原生的的获取方式是不一样


这个是vue的Button其获取方式是:

 getPositionForTextAreaTest(a){
      debugger;
      let position = document.getElementById("test").getElementsByTagName("textarea")[0];
      let pos =   getPositionForTextArea(position);
      console.log(pos);
      let y = position.value;
      console.log(y)
      this.frontString = y.substring(0,pos);
      this.afterString = y.substring(pos,this.formData.smsContent.length);
      console.log(this.frontString);
      console.log(this.afterString);
      // this.formData.smsContent = '';
      this.formData.smsContent = this.frontString+a+this.afterString;
      console.log(y)
    },

Vue input textarea输入框通过光标位置插入想要的值_第2张图片

对于原生的html的button和input的使用

 其获取规则

 getPositionForTextAreaTest(a){
      debugger;
      let position = document.getElementById("testInput");
      let pos =   getPositionForTextArea(position);
      console.log(pos);
      let y = position.value;
      console.log(y)
      this.frontString = y.substring(0,pos);
      this.afterString = y.substring(pos,this.formData.smsContent.length);
      console.log(this.frontString);
      console.log(this.afterString);
      // this.formData.smsContent = '';
      this.formData.smsContent = this.frontString+a+this.afterString;
      console.log(y)
    },

对于前端从textarea获取光标位置,可以参考:https://m.jb51.net/article/25839.htm

你可能感兴趣的:(js,vue,javascript)