如何在以编程方式添加文本后显示输入中的文本结尾?

时间:2016-05-31 14:55:10

标签: javascript

我想以编程方式在输入中添加单词,并始终查看文本的结尾。但问题是,当我在文本长度与输入长度几乎相同时添加单词(如input.value += 'word')时,输入内的文本不会移动,所以我只看到开始文本和结尾被隐藏起来 我想如果我可以将光标放到输入的末尾它会有所帮助,但光标无法在Chrome中工作,例如

input.value = input.value

input.setSelectionRange(input.value.length, input.value.length);

2 个答案:

答案 0 :(得分:3)

似乎运作良好:



let input = document.getElementById('auto');
let sentence = 'Courage is the magic that turns dreams into reality.';
let index = 0;

setTimeout(function typing() {
  let letter = sentence.charAt(index++);

  input.blur();
  input.value += letter;
  input.focus();
  input.setSelectionRange(index, index);

  if (index < sentence.length) {
    let ms = Math.floor(75 + Math.random() * 150);

    setTimeout(typing, ms);
  }
}, 1000);
&#13;
<input id="auto" type="text">
&#13;
&#13;
&#13;

答案 1 :(得分:1)

如果输入没有焦点,则Chrome会将其“滚动”显示在左侧,显示输入值的开头。

如果元素具有焦点,则可以设置选择范围以移动光标:

window.onload = function(){
  
  var input = document.getElementById('foobar');
  input.value += ' bazbat';
  
  input.focus();
  input.setSelectionRange( input.value.length - 1 );
  
}
<input id="foobar" value="foobar" size="6">

但如果用户试图键入值时光标移动,那将是一个非常令人困惑和令人沮丧的用户体验。

需要考虑的其他选择: