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

Javascript 在给定值之前运行jQuery.on(),javascript,jquery,Javascript,Jquery,为什么.on()在按键之前没有获取表单输入字段的值(#忘记) $(document).ready(function() { $(document).on('keypress', '#pass', function() { var value = $.trim($('#pass').val()); alert(value); if (!value.length) { alert("Show"); $('

为什么.on()在按键之前没有获取表单输入字段的值(#忘记)

$(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();
        }
    });
});

当我输入第一个字符时,警报显示没有输入。第二个字符导致值仅为第一个字符。.on()函数似乎在注册按键之前运行?如何修复此问题或是否有其他功能?

只需将
keypress
更改为
keypup

$(document).ready(function() {
    $(document).on('keyup', '#pass', function() {
    var value = $.trim($('#pass').val());
        console.log(value);
        if (!value.length) {
            console.log("Show");
            $('#forgot').show();
        } else {
            console.log("Hide");
            $('#forgot').hide();
        }
    });
});

您需要keyup事件而不是keypress

因此,请替换:

 $(document).on('keypress', '#pass', function() {


按键时触发的事件。它不会等待值的出现。尝试使用
keyup
<按下后释放按键时,会触发代码>键向上,直到处理该值为止-

 $(document).on('keyup', '#pass', function() {
按键

当浏览器注册键盘输入时,按键事件被发送到元素。这与keydown事件类似,只是修改键和非打印键(如Shift、Esc和delete)触发keydown事件,而不是keypress事件。根据平台和浏览器的不同,这两个事件之间可能会出现其他差异

keyup

当用户释放键盘上的键时,keyup事件被发送到元素。它可以附加到任何元素,但事件只发送到具有焦点的元素。可聚焦元素在浏览器之间可能有所不同,但表单元素始终可以获得焦点,因此对于这种事件类型来说是合理的候选者

按键启动前按下按键会触发按键事件)。所以它不会得到完整的值。 使用键控键控

HTML


我现在就来看一看,看看如何完美地实现它!那么,在函数运行时,keyup和keypress之间的唯一区别是什么呢?
keypress
事件是在键启动前按下键时触发的。不要使用alert()使用console.log()stackoverflow.com/questions/8203473/…@HimeshAadeshara:而是检查我的答案,它正在工作,使用ID
按钮
-注意,keyup只触发一次,因此重复的字符不会单独注册。
 $(document).on('keyup', '#pass', function() {
<input id="pass">
$(document).ready(function() {
    $(document).on('keyup', '#pass', function() {
    var value = $.trim($('#pass').val());
        alert(value);
        if (!value.length) {
            alert("Show");
            $('#forgot').show();
        } else {
            alert("Hide");
            $('#forgot').hide();
        }
    });
});