jQuery .on()在给定值之前运行

Ena*_*ain 3 javascript jquery

为什么.on()在keypress发生之前没有得到表单输入字段(#forgot)的值.

$(document).ready(function() {
    $(document).on('keypress', '#pass', function() {
    var value = $.trim($('#pass').val());
        alert(value);
        if (!value.length) {
            alert("Show");
            $('#forgot').show();
        } else {
            alert("Hide");
            $('#forgot').hide();
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

当我输入第一个字符时,警报显示没有输入.第二个字符导致值只是第一个字符..on()函数似乎在按键按下之前运行?我该如何解决这个问题还是有替代功能?

Sou*_*ose 6

keypress按键时触发事件.它不会等待价值的到来.试试吧keyup.keyup按下后释放键时会触发,直到该值被执行为止.-

 $(document).on('keyup', '#pass', function() {
Run Code Online (Sandbox Code Playgroud)

按键

当浏览器注册键盘输入时,按键事件将发送到元素.这类似于keydown事件,除了修饰符和非打印键(如Shift,Esc和delete)触发keydown事件,但不触发keypress事件.根据平台和浏览器,可能会出现两个事件之间的其他差异.

KEYUP

当用户在键盘上释放键时,键盘事件被发送到元素.它可以附加到任何元素,但事件仅发送到具有焦点的元素.可聚焦元素可以在浏览器之间变化,但是表单元素总是可以获得焦点,因此这种事件类型是合理的候选者.