uniapp,vue中使用记忆textarea插入指定游标位置

@Ta 2021-09-13发布,2021-09-13修改 5860点击
bhx9a-ox6mz.gif

<textarea  @blur="textarea_blur" :maxlength="-1" v-model="post.content" placeholder="写点什么吧" />




使用 textarea_cursor:0, 作为记忆游标位置


method:{
	texarea_insert(str){
		let arr=[
			this.post.content.substr(0,this.textarea_cursor),
			str,
			this.post.content.substring(this.textarea_cursor)
		];
		this.post.content=arr.join("").toString()
		this.textarea_cursor+=parseInt(str.length)
	},
	textarea_blur(e){
		this.textarea_cursor=e.detail.cursor;
		console.log("失去焦点:"+this.textarea_cursor)
	},
}


这样我们在外部任何地位调用,(插入图片,插入表情等)可以做到 在刚才光标的位置插入 string数据,而不是直接appand到 句首或者句尾
回复列表(13|隐藏机器人聊天)
  • @Ta / 2021-09-13 / /
    Nice!
  • @Ta / 2021-09-13 / /

    当点击插入的时候,是否可以通过setSelectionRange设置输入框光标的位置,让原生处理插入,而不是手动合并数据呢?
    小米MIX2s(白)

  • @Ta / 2021-09-13 / /
    @水木易安,uniapp不行,我找过了,selectionStart都不生效的, 具体的来说应该是 nvue页面不行,好像不支持媒体查询
  • @Ta / 2021-09-13 / /

    @胡椒舰长@水木易安,你们能帮忙修复一下虎绿林正在用的insertText()函数吗,在手机版chrome里连续多次插入,内容就会跑到开头(火狐没有该问题)。触发方法很简单,@一个人两次。问题的原因应该是obj.value = xxx导致焦点丢失,然后obj.selectionStart = obj.selectionEnd = cursorPos;在chrome里并不能恢复焦点(但是火狐可以)。

      function insertText(obj, str) {  
        if (document.selection) {  
          var sel = document.selection.createRange();  
          sel.text = str;  
        } else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') {  
          var startPos = obj.selectionStart,  
            endPos = obj.selectionEnd,  
            cursorPos = startPos,  
            tmpStr = obj.value;  
          obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length);  
          cursorPos += str.length;  
          obj.selectionStart = obj.selectionEnd = cursorPos;  
        } else {  
          obj.value += str;  
        }  
      }
    
  • @Ta / 2021-09-13 / /
    实不相瞒,我已经发现这个问题了, 等我什么时候学会流畅的打字的时候,一定帮@老虎会游泳 来修复这个 问题。

    我打字很快的,请耐心观看
    小米MIX2s(白)

  • @Ta / 2021-09-13 / /
    @老虎会游泳,我一直用电脑chrome 好像没发现什么问题,
  • 000
    @Ta / 2021-09-13 / /

    uniapp还是用不惯 平时弄的页面也没多复杂 也没多端需求(小程序套webview,需要支付的再单独跳到原生页面)还是直接手动vue了。因为网路问题甚至npm打包也懒得用了,还好现在浏览器也原生支持import,大部分CDN也有esm版本用的还算爽快 虽然效率方面差一丢丢但小项目也不存在性能问题

  • 000
    @Ta / 2021-09-13 / /

    @胡椒舰长,用的啥输入法?居然候选词也支持圆角背景,谷歌拼音win版也是这样,可惜这货停更好久了

  • @Ta / 2021-09-13 / /
    @000,黑色的鼠标肯定是Mac,然后这肯定是自带的输入法
  • 000
    @Ta / 2021-09-13 / /
  • @Ta / 2021-09-14 / /

    @000,快问问我是什么输入法,我的不是Mac
    小米MIX2s(白)

  • 000
    @Ta / 2021-09-14 / /

    @水木易安,搜狗我在用 你的演技哪里学的

  • @Ta / 2021-09-14 / /

    @000,新东方在线。现在双减你没机会了
    小米MIX2s(白)

添加新回复
回复需要登录