Jquery元素val()不在正确的位置



为什么jQuery报告搜索字段的值比字段的实际值晚一步?在jsFiddle中。

<input type="search" class="search" name="test">
<p id="result"></p>
<script>
$('.search').each(function () {
    var search_type = $(this).attr('name');
    $(this).keydown(function (e) {
        var params = {
            'search_type': search_type,
                'q': $(this).val()
        };
        $('#result').text(params.q);
    });
});
</script>

因为你正在使用keyup,使用keydown会给你那个行为。因为只要按下键,keydown就会触发,但值还没有更新。在keyup上,值已经更新。

 $(this).keyup(function (e) {
    var params = {
        'search_type': search_type,
        'q': $(this).val()
    };
    $('#result').text(params.q);
 });

使用keyup事件。这将为您提供更新的值。

以下是事件的解释:关键事件

最新更新