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

时间:2013-03-25 06:43:44

标签: jquery html

为什么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>

2 个答案:

答案 0 :(得分:1)

因为您正在使用keyup,所以使用keydown将为您提供该行为。因为按下键后keydown会立即触发,但值尚未更新。在keyup上,值已更新。

Demo

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

答案 1 :(得分:0)

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

以下是对事件的解释:Key Events