You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Keypress事件添加延迟?解决仅获取第二个输入数字的问题

解决Keypress事件无法获取当前输入字符的问题

你遇到的问题是因为keypress事件触发时,当前按下的字符还未写入输入框的value属性,所以第一次按键时val()只能拿到输入框之前的空值,第二次按键时才能拿到第一次输入的内容。

最简单的解决方案:改用keyup事件

keyup事件在按键松开后触发,此时输入框的value已经更新为最新内容,无需额外延迟:

$('#cuota').on('keyup', function(event) {
    // 注意原代码的语法错误:$('#cuota) 缺少闭合引号,已修正
    var precio_origen = $('#cuota').val();
    console.log(precio_origen);
});

如果必须使用keypress事件,有两种处理方式:

  1. 短延迟后获取输入框值
    通过setTimeout等待字符写入输入框后再获取:
$('#cuota').on('keypress', function(event) {
    setTimeout(() => {
        var precio_origen = $('#cuota').val();
        console.log(precio_origen);
    }, 10); // 10ms的延迟足够确保字符写入
});
  1. 直接从事件对象中获取当前按下的字符
    不需要等待,直接拼接已有值和当前输入的字符:
$('#cuota').on('keypress', function(event) {
    var currentChar = String.fromCharCode(event.which);
    var precio_origen = $(this).val() + currentChar;
    console.log(precio_origen);
});

注意:原代码中存在语法错误,$('#cuota)缺少闭合的单引号,需要修正为$('#cuota')才能正常运行。

内容的提问来源于stack exchange,提问作者JCarlosIV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 03:06:39