代码之家  ›  专栏  ›  技术社区  ›  Achaius

如何一次一个字母将用户输入捕获到字段中

  •  1
  • Achaius  · 技术社区  · 15 年前

    我们想模仿用户一次输入一个字母(针对儿童)。假设他们要输入“hello”,我们希望分别捕获所有字母。(例如,您将显示类似5个下划线的内容,以显示它们必须提供5个输入)。假设他们输入了H E L D(即最后一个字母是错误的),他们可以按退格键来删除它。

    我们尝试使用输入类型文本字段,但无法获得所需的输出。我们如何通过HTML或jquery实现这一点?

    1 回复  |  直到 15 年前
        1
  •  1
  •   egyedg    15 年前

    我的方法是捕获keydown事件,然后进行验证,如果成功,则显示正确的字母而不是下划线。

    简化方案:

    HTML(需要一些CSS来格式化):

    ...
     <ul id="wordToEnter">
       <li>_</li>
       ...
       <li>_</li>
     </ul>
    ...
    

    -或者可以通过编程生成,要点是每个字母有一个li元素

    javascript(带jquery):

    var currentLetter = 1;
    var expectedWord = "HELLO"; // this can be obtained dynamically
    
    $(window).keydown(function (event) { 
      var keyCode = String.fromCharCode(event.keyCode);
      if (keyCode == expectedWord.charAt(currentLetter - 1)) {
         changeUnderscoreToLetter(keyCode);
      }
    });
    
    function changeUnderScoreToLetter(letter) {
       $("#wordToEnter>li:nth-child(" + currentLetter + ")").text(letter);
       currentLetter++;
       if (currentLetter > $("#wordToEnter li").length)
          alert("Word enetered");
    }
    
    • 可能包含错误(未测试),可以优化

    希望它有帮助。