js中replace方法光标不跳最后(VX)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中replace方法光标不跳最后(VX)相关的知识,希望对你有一定的参考价值。

$("#wetg_Left_ipt2").bind("input",function() {

   //获取光标位置
  var Txt1Curs = $scope.getTxt1CursorPosition(this);

  var oldtexv = this.value;

  //格式化字符串4位分割,去掉非字母、数字、/和-以外的字符
  var texv = oldtexv.replace(/[^A-Za-z0-9/ - ] / g,‘‘).replace(/(\S{4})(?=\S)/g,‘$1 ‘);

  if (this.value.length > texv.length) {

    this.value = texv;

    //设置光标位置
    $scope.setTxt1CursorPosition(this, Txt1Curs - 2);

   } else if (texv != this.value) {

    this.value = texv;

    if ((Txt1Curs - 1) % 5 == 4) {

    //设置光标位置
    $scope.setTxt1CursorPosition(this, Txt1Curs);

  } else {

    //设置光标位置
    $scope.setTxt1CursorPosition(this, Txt1Curs - 1);

  }

  }

});

$scope.getTxt1CursorPosition = function(oTxt1) {

  oTxt1.focus();

  var cursurPosition = -1;

  if (oTxt1.selectionStart) { //非IE浏览器
  cursurPosition = oTxt1.selectionStart;

  } else { //IE
    var range = document.selection.createRange();

    range.moveStart("character", -oTxt1.value.length);

    cursurPosition = range.text.length;

  }

  return cursurPosition;

}

$scope.setTxt1CursorPosition = function(oTxt1, i) {

    var cursurPosition = -1;

    if (oTxt1.selectionStart) { //非IE浏览器
      //selectionStart我的理解是文本选择的开始位置
      oTxt1.selectionStart = i + 1;

      //selectionEnd我的理解是文本选择的结束位置
      oTxt1.selectionEnd = i + 1;

      oTxt1.focus();

     } else { //IE
      var range = oTxt1.createTextRange();

      range.move("character", i);

      range.select();

    }

 }












以上是关于js中replace方法光标不跳最后(VX)的主要内容,如果未能解决你的问题,请参考以下文章

js的replace函数影响光标定位,怎么解决?

js中,为可编辑div添加表情后如何光标移至最后

js replace 匹配转换字符大小写

在js中,如何替换一个文本中的多个字符?

js的replace如何全部替换目标字符串

js的replace如何全部替换目标字符串