JQuery - .val()返回旧值

kal*_*ran 6 javascript jquery

我有一些麻烦,我使用 https://github.com/mailcheck/mailcheck

有了这个功能

                $('#email').on('keypress', function(event) {
                $(this).mailcheck({
                    suggested: function(element, suggestion) {
                        $('#email_check').html("Did you mean <b><i><a href='#' id='suggest_email'>" + suggestion.full + "</a></b></i>?");
                        $('#suggest_email').on('click', function(event) {
                            event.preventDefault();
                            $('#email').val($(this).text());
                            $('#email_check').empty();
                            $('.error_js').empty()
                        });
                    },
                    empty: function(element) {
                        $('#email_check').empty();
                        $('.error_js').empty()
                    }
                });
            });
Run Code Online (Sandbox Code Playgroud)

但是当脚本使用时:

opts.email = this.val(); 
Run Code Online (Sandbox Code Playgroud)

(该文件的第263行https://github.com/mailcheck/mailcheck/blob/master/src/mailcheck.js)

this.val()返回输入的旧值.我试过用一个

this.attr("value");
Run Code Online (Sandbox Code Playgroud)

和

this.prop("value");
Run Code Online (Sandbox Code Playgroud)

同样的问题.

当我做一个console.log(这个); 并且在对象中寻找我输入的值,它很好,它包含了很好的价值.

那么如何获得适当的价值呢?这就是我请求你帮助的原因.

谢谢.

Amm*_*CSE 9

不要使用该keypress事件,因为它在新事件之前被触发value或者在事件character中注册input.使用KEYUP代替

$('#email').on('keyup', function(event) {
                $(this).mailcheck({
                    suggested: function(element, suggestion) {
                        $('#email_check').html("Did you mean <b><i><a href='#' id='suggest_email'>" + suggestion.full + "</a></b></i>?");
                        $('#suggest_email').on('click', function(event) {
                            event.preventDefault();
                            $('#email').val($(this).text());
                            $('#email_check').empty();
                            $('.error_js').empty()
                        });
                    },
                    empty: function(element) {
                        $('#email_check').empty();
                        $('.error_js').empty()
                    }
                });
            });
Run Code Online (Sandbox Code Playgroud)