6 个回答
  • 11.5k

就是获取光标位置 然后截取拼接字符串 重新填入input 重新设置光标

function insertInputTxt(id, insertTxt) {
    var elInput = document.getElementById(id);
    var startPos = elInput.selectionStart;
    var endPos = elInput.selectionEnd;
    if (startPos === undefined || endPos === undefined) return
    var txt = elInput.value;
    var result = txt.substring(0, startPos) + insertTxt + txt.substring(endPos)
    elInput.value = result;
    elInput.focus();
    elInput.selectionStart = startPos + insertTxt.length;
    elInput.selectionEnd = startPos + insertTxt.length;
}
    • 3
    • 新人请关照

    如果输入框为iview的InputNumber,要双向绑定赋值好像才能成功,光标定位要加上nextTick 或者 setTimeOut,不然就会重新光标定位失败。
    this.$nextTick(() => {
    elInput.selectionStart = startPos + value.length
    elInput.selectionEnd = startPos + value.length
    })

      老哥能不能发一下完整代码看你怎么写的我也碰到了这个问题

        插个眼 这问题有意思

          • 1
          • 新人请关照

          第一步:监听输入框的鼠标失焦事件@blur
          <el-input @blur="handleInputBlur"></el-input>

          第二步: 获取失去交点时的光标在输入内容中的位置,data里定义一个变量存储如 blurIndex
          handleInputBlur(e) {

          this.blurIndex = e.srcElement.selectionStart;

          }
          第三步:省略。。

            撰写回答

            登录后参与交流、获取后续更新提醒