最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

jquery - Simulate the look of typing, not the actual keypresses, in javascript - Stack Overflow

programmeradmin8浏览0评论

I'm trying to write a simple function that will make it appear as though someone is typing in a textarea

-- This is my function (forgive me if its atrocious, but I don't normally use javascript) --- The console.log() part works fine, but for some reason I cannot get this script to update the dom the way I would expect...

        function type(string) {
            value = "";

            el = document.getElementById("typeArea");
            for (var i = 0; i < string.length; i++) {
                value += string[i];
                //$("#fbw > textarea").val(value);
                el.textContent = value;
                console.log(value);
                sleep(160);
            }
            sleep(2000);
        }

I appreciate any insight you can give me.

I'm trying to write a simple function that will make it appear as though someone is typing in a textarea

-- This is my function (forgive me if its atrocious, but I don't normally use javascript) --- The console.log() part works fine, but for some reason I cannot get this script to update the dom the way I would expect...

        function type(string) {
            value = "";

            el = document.getElementById("typeArea");
            for (var i = 0; i < string.length; i++) {
                value += string[i];
                //$("#fbw > textarea").val(value);
                el.textContent = value;
                console.log(value);
                sleep(160);
            }
            sleep(2000);
        }

I appreciate any insight you can give me.

Share Improve this question asked May 15, 2014 at 20:37 rm-vandarm-vanda 3,1683 gold badges24 silver badges35 bronze badges 3
  • Why have you tagged this jQuery if you're not using jQuery? – user229044 Commented May 15, 2014 at 20:39
  • What does happen? Also, jsfiddle/etc is nice for stuff like this. – Dave Newton Commented May 15, 2014 at 20:41
  • jQuery is an option I am willing to use. In fact, I tried jQuery first. Good point, I'll throw in a jsfiddle, momentarily. Everything works, except for the part in the loop that is supposed to update the contents of the textarea.... even console.log shows each update... – rm-vanda Commented May 15, 2014 at 20:53
Add a ment  | 

2 Answers 2

Reset to default 11

jsFiddle Demo

All you were missing was a construct instead of Sleep. The js approach for acplishing this is to use a timeout and a recursive call in order to iterate through your string

function type(string,element){
 (function writer(i){
  if(string.length <= i++){
    element.value = string;
    return;
  }
  element.value = string.substring(0,i);
  if( element.value[element.value.length-1] != " " )element.focus();
  var rand = Math.floor(Math.random() * (100)) + 140;
  setTimeout(function(){writer(i);},rand);
 })(0)
}

You can do something like this using setTimeout function. Codepen

$(function(){
  simulateTyping('looks  like someone is typing...', '#txt')

  function simulateTyping(str, textAreaId) {
    var textArea = $(textAreaId);

    var currentCharIndex = 0;
    function typeChar(){
      if (currentCharIndex >= str.length)
        return;
      var char = str[currentCharIndex];
      textArea.val(textArea.val() + char);
      currentCharIndex ++;
      setTimeout(typeChar, 500);
    } 

    typeChar();

  }
})

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论