繁体   English   中英

Javascript用字符串替换onKeyUp事件

[英]Javascript Replace onKeyUp event with a string

我不太擅长JavaScript,我需要一个简单的脚本。 基本上,我有一个输入框,当用户键入一个键时,它将消失并更改为我拥有的任何字符串。 我只能得到一封要更改的字母,这样我才能显示出我的意思。 因此,每当用户键入一条消息时,它都会被替换为“ h”,但我想要的是让“ hello”逐个字母地输入,而不仅仅是一直输入“ h”,而不是一次都输入“ hello”。

这是代码。

<form action=# name=f1 id=f1 onsubmit="return false">

<input type=text name=t1 id=t1 value="" size=25 style="width:300px;" 
    onkeypress="if(this.value.match(/\D/))"
    onkeyup   ="this.value=this.value.replace(/\D/g,'h')">

</form>

刚刚进行编辑,因为它提供了JS错误希望,但您没有想到:您是否正在尝试执行以下操作:

 function replaceString(el){ var sampleText = "hello".split(""); var value = ""; console.log(el) el.value.split("").forEach(function(str, index){ value += sampleText[index%sampleText.length]; }); el.value = value; } 
 <form action=# name=f1 id=f1 onsubmit="return false"> <input type=text name=t1 id=t1 value="" size=25 style="width:300px;" onkeypress="if(this.value.match(/\\D/));" onkeyup ="replaceString(this);"/> </form> 

如果要模拟在文本框中输入文本,则需要使用超时。 以下功能就足够了:

function simulateTyping(str, el)
{
    (function typeWriter(len)
    {
      var rand = Math.floor(Math.random() * (100)) + 150;
      if (str.length <= len++)
      {
        el.value = str;
        return;
      }
      el.value = str.substring(0,len);
      if (el.value[el.value.length-1] != ' ')
        el.focus();
      setTimeout(
        function()
        {
          typeWriter(len);
        },
        rand);
    })(0);
}

您需要向其传递两个参数:要键入的字符串(例如“ hello”)和要在其中键入字符串的元素。 这是一个简单的包装函数:

function typeHello() {
  var el = document.getElementById('t1');
  var str = 'hello';
  simulateTyping(str, el);
}

当您调用typeHello函数时,它将找到具有“ t1” ID的元素,然后键入“ hello”文本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM