2014-02-17 64 views
0

我有关于如何检查输入文本更改时间的问题?我用​​这样的:更改文本时检查输入

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

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

回答

3

有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()); 
}); 
+0

它与我合作(第二种解决方案)。谢谢! – Eddy

2

此处不要使用​​,而是使用keyup,以便在您收到事件时输入值已更改。

请参阅processing of key events上的MDN。

+0

我想要得到的文本时使用按下按钮(这意味着在按下,只涨不按钮) – Eddy

+0

文本当用户按下按钮并没有改变,浏览器没有如果您释放密钥,文字将如何改变的想法。为了模拟后面会发生什么,您可以将键插入光标的位置,但这不是正确的方法。你的目标是什么? –

+0

我创建了一个自动完成功能,可以在用户打字时检测到,我将向服务器发送请求,并且它必须是实时的! – Eddy

2

可以使用keyup event

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

但是当我按下按钮但不按下按钮时,就没有日志。 – Eddy

0

您可以使用.change()

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

当你模糊输入时,'change'事件将被触发! – ducdhm