在突出显示文本时将光标移动到输入的最后

问题描述 投票:0回答:1

我需要把光标放在输入的最后,因为它是在开始时,它突出显示文本,所以它开始。

我尝试使用this.selectionStart = this.selectionEnd = this.value.length;,但它不能很好地工作,或者我可能把它放错了。

谢谢 :)

window.setInterval(function() {
  change();
}, 1);

function change() {
  $(function() {
    var elem = $('#code');

    highlighter(' new ', elem, "red");
    highlighter(' button', elem, "blue");
  });

  function highlighter(word, elem, color) {
    var html = elem.html();
    var reg = new RegExp(word, "g");

    html = html.replace(reg, "<span class='" + color + "'>" + word + "</span>");

    elem.html(html);
  }
}
.red {
  color: red;
}

.blue {
  color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="code" contenteditable="true">
  new button
</div>
javascript jquery html highlight
1个回答
0
投票

var elem = $('#code');

window.setInterval(function(){
  change();
}, 1);
function change(){
  $(function(){
    highlighter(' new ', elem,"red");  
    highlighter(' button', elem,"blue"); 
  });

function highlighter(word, elem, color){
  var html = elem.html();
  var reg = new RegExp(word,"g");
  html = html.replace(reg, "<span class='"+color+"'>" + word +"</span>");
  elem.html(html);
}
function addEvent(elem, event, fn){
if(elem.addEventListener){
  elem.addEventListener(event, fn, false);
}else{
  elem.attachEvent("on" + event,
  function(){ return(fn.call(elem, window.event)); });
}}

addEvent(elem,'focus',function(){
  var that = this;
  setTimeout(function(){ that.selectionStart = that.selectionEnd = 10000; }, 0);
});

下面的代码应该可以实际工作,但是因为浏览器问题看起来不起作用。

this.selectionStart = this.selectionEnd = this.value.length;

为了正确加载这个,我已经增加了时间来摆脱它

setTimeout(function(){ that.selectionStart = that.selectionEnd = 10000; }, 0);
© www.soinside.com 2019 - 2024. All rights reserved.