在jQuery中,如何遍历字符串中的字符并强制匹配输入中的正确字符?

In jQuery how to loop through characters in a string and force match correct characters in input?

提问人:Sol 提问时间:11/18/2022 最后编辑:isherwoodSol 更新时间:11/18/2022 访问量:42

问:

我正在尝试匹配输入中的字符,但是当他们写错字符时,它不允许您将其放入输入中。这就是我目前所拥有的。

不确定我在非匹配区域做错了什么,我尝试重建字符串以放回输入中。

$(document).ready(function() {
  $('#input1').keyup(function() {
    var dInput = $('#input1').val().toLowerCase();
    var a;
    var b;
    var word = "word";
    var inputword;
    word = word.toLowerCase();
    for (var i = 0; i < dInput.length; i++) {
      a = dInput.charAt(i);
      b = word.charAt(i);
      if (a == b) {
        // alert("matches");
      } else {
        // alert("not matching");
        console.log(i);
        for (var j = 0; j <= i; j++) {
          inputword = inputword + inputword.charAt(j);
        }
        $('#input1').val(inputword);
      }
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="input1"></input>

JavaScript jQuery 字符串 匹配

评论

2赞 Barmar 11/18/2022
您需要初始化为空字符串。inputword

答:

1赞 mplungjan 11/18/2022 #1

您当前没有将 inputword 用于其他任何在错误时清除字段的内容。

我想你是这个意思

$(document).ready(function() {
  $('#input1').on("input",function() {
    var dInput = $(this).val().toLowerCase();
    var a;
    var b;
    var word = "word";
    word = word.toLowerCase();
    var inputword="";
    for (var i = 0; i < dInput.length; i++) {
      a = dInput.charAt(i);
      b = word.charAt(i);
      if (a == b) {
        inputword += a;
      } 
      $('#input1').val(inputword);
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="input1"></input>

较短的版本

$(document).ready(function() {
  $('#input1').on("input", function() {
    const dInput = $(this).val().toLowerCase();
    let word = "word";
    word = word.toLowerCase();
    let inputword = "";
    [...dInput].forEach((char, i) => {
      if (char === word.charAt(i)) inputword += char;
    })
    $('#input1').val(inputword);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="input1"></input>