【问题标题】:Trying to set input by typing anywhere in jquery尝试通过在 jquery 中的任何位置键入来设置输入
【发布时间】:2021-07-10 12:39:57
【问题描述】:

我正在尝试制作一个游戏,人们不必在输入字段内单击即可输入,并且我通过输入设置输入字段值,除了每种类型都输入一个新字母,它会重置输入字段而不是添加值。这是代码:


$( document).on( "keydown", function( event ) {
  $( ".inputfield" ).val(String.fromCharCode(event.which))
});

【问题讨论】:

  • 先获取输入的val,然后追加下一个代码
  • 您需要验证输入,否则您将在输入中获得控制字符

标签: javascript html jquery forms


【解决方案1】:

您需要添加到当前值而不是覆盖它。

$( document).on( "keydown", function( event ) {
  const current_value = $( ".inputfield" ).val();
  const new_value = current_value + String.fromCharCode(event.which);
  $( ".inputfield" ).val(new_value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" class='inputfield' />

【讨论】:

  • 谢谢!如果我想使用删除按钮删除最后一个字符呢?
【解决方案2】:

您可以使用 val(function) 公开您连接的当前值。

请注意,您需要验证 which 是否在字符代码范围内

$( document).on( "keydown", function( event ) {
   $( ".inputfield" ).val(function(i,curr){
     return curr + String.fromCharCode(event.which)
  });      
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" class='inputfield' />

【讨论】:

  • 谢谢!如果我想使用删除按钮删除最后一个字符呢?
  • 使用.data() 存储当前值,然后对该字符串进行切片并设置新值
猜你喜欢
  • 1970-01-01
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多