Javascript - 为什么输入值缺少一个字符?

时间:2018-01-22 17:01:32

标签: javascript

我正在尝试让此脚本在填充原始字段时自动填充另一个字段。但是第二个字段会丢失其值的最后一个字符。有什么想法吗?

Here is the code... 

<input type="text" class="first" placeholder="type here">
<input type="text" class="second" placeholder="here it is the reuslt">

$(".first").on('keydown',function(){
$(".second").val($(this).val());
});

http://jsfiddle.net/fmdwv/1/

2 个答案:

答案 0 :(得分:2)

keydown事件在value更新之前触发,因此当您阅读它时,您会在被按下的键更改之前获得value

使用input事件(粘贴后也会触发)。

&#13;
&#13;
$(".first").on('input', function() {
  $(".second").val($(this).val());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="first" placeholder="type here">
<input type="text" class="second" placeholder="here it is the reuslt">
&#13;
&#13;
&#13;

答案 1 :(得分:0)

当用户按某个键

时会发生 onkeydown 事件

当用户释放密钥

时,会发生 onkeyup 事件

所有浏览器中的所有键(例如ALT,CTRL,SHIFT,ESC)都不会触发 onkeypress 事件。要仅检测用户是否按下了某个键,请使用onkeydown事件,因为它适用于所有键。

在您的情况下 onkeydown 它首先执行函数。所以输入中的执行值不会被按下的键值更新,因此它会在插入值之前触发

结帐example

$(".first").on('keyup',function(){
$(".second").val($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="first" placeholder="type here">
<input type="text" class="second" placeholder="here it is the reuslt">