我有一个关于如何检查输入文本何时更改的问题?我像这样使用keydown
:
$('#query').keydown(function () {
console.log($(this).val());
});
但是当实际值为query
时,控制台将记录quer
。它总是延迟。我不知道为什么?
答案 0 :(得分:3)
有三种方法可以实现它。
第一种方法是使用其他活动,例如input
或propertychange
。请注意,只有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());
});