2013-03-25 5 views
1

Почему jQuery сообщает значение поля поиска за один шаг за фактическое значение поля? Здесь он находится в jsFiddle.Элемент jquery val() не в нужном месте?

<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> 

ответ

1

Поскольку вы используете KeyUp, используя KeyDown даст вам такое поведение. Поскольку keydown срабатывает, как только нажата клавиша, но значение еще не обновлено. На клавиатуре значение обновлено.

Demo

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

Используйте событие keyup. Это даст вам обновленные значения.

Вот объяснение событий: Key Events

Смежные вопросы