如何将输出 keyPress 设置为相同的输入字段?

How can i set the output keyPress to the same input field?

我正在尝试获取用户按键输出并将其设置为相同的输入。

但是在我的 input 结果中,我得到了两次输出。例如,如果用户按下 d,我会看到 Dd。我该如何解决这个问题?

$(document).ready(function() {
  $("#test").keypress(function(e) {
    let key = String.fromCharCode(e.keyCode);
    let upperCaseKey = (key.toUpperCase())
    $("#test").val(upperCaseKey);
    $("#test").css("width", "25px")
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type=text class="myid" id="test" />

假设您的目标是强制用户输入的值是大写的,您可以简单地在 value:

上调用 toUpperCase()

jQuery($ => {
  $("#test").on('input', e => e.target.value = e.target.value.toUpperCase());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type=text class="myid" id="test" />

注意这里 input 事件的使用。这是因为它还会覆盖使用鼠标复制到字段中的文本。

<input type=text class="myid" id="test" />




$(".myid").on('keypress', function(evt) {
  $(this).val(function (_, val) {
    return val + String.fromCharCode(evt.which).toUpperCase();
  });

  return false;
});