更改文本时检查输入

时间:2014-02-17 09:15:05

标签: javascript jquery keydown

我有一个关于如何检查输入文本何时更改的问题?我像这样使用keydown

$('#query').keydown(function () {
    console.log($(this).val());
});

但是当实际值为query时,控制台将记录quer。它总是延迟。我不知道为什么?

4 个答案:

答案 0 :(得分:3)

有三种方法可以实现它。

第一种方法是使用其他活动,例如inputpropertychange。请注意,只有IE支持propertychange,现代浏览器支持input

$('#query').on('input perpertychange', function () {
    console.log($(this).val());
});

第二种方法是将console.log($(this).val());放入setTimeout语句中。你可以得到你正在输入的内容。 (原因?我很抱歉,我真的不知道为什么,只是使用它);

$('#query').keydown(function () {
    var query = $(this);

    setTimeout(function () {
        console.log(query.val());
    }, 0);
});

最后一个使用textchange事件(http://zurb.com/playground/jquery-text-change-custom-event)。像这样:

$('#query').on('textchange', function () {
    console.log($(this).val());
});

答案 1 :(得分:2)

请勿在{{1​​}}使用此keydown,以便在收到活动时输入的值已更改。

请参阅processing of key events上的MDN。

答案 2 :(得分:2)

您可以使用keyup event

$('#query').keyup(function () {
    console.log($(this).val());
});

答案 3 :(得分:0)

您可以使用.change()

$('#query').change(function () {
    console.log($(this).val());
});