$("#hi").keypress(function() {
$(".hi").html("Writing...");
});
$('#hi').keyup(function() {
$(".hi").delay(1000).queue(function() {
$(this).html("");
});
});
当我在文本框(#hi)中键入“Hello”时,keyup 仅适用于第一个字母,然后它不会消失。
$("#hi").keypress(function() {
$(".hi").html("Writing...");
});
$('#hi').keyup(function() {
$(".hi").delay(1000).queue(function() {
$(this).html("");
});
});
当我在文本框(#hi)中键入“Hello”时,keyup 仅适用于第一个字母,然后它不会消失。
您可以使用超时而不是延迟:
var timeout;
$("#hi").keypress(function() {
// Clear any previous timeout
clearTimeout(timeout);
// Apply the writing text
$(".hi").html("Writing...");
// Remove the text after one second if no more key is pressed until then
timeout = setTimeout(function () {
$(".hi").html("");
}, 1000);
});
这是一个工作示例:http: //jsfiddle.net/tF7DH/1/
这里的想法是您设置超时以在击键后一秒删除“Writing...”文本。如果在那一秒内进行了新的击键,则清除先前的超时并设置新的超时。这样,只有当用户停止输入超过一秒钟时,文本才会被删除。
您通过不调用来阻塞队列next
从 jQuery 1.4 开始,被调用的函数作为第一个参数传递给另一个函数。调用时,它会自动使下一个项目出列并保持队列移动。我们使用它如下:
$("#test").queue(function(next) {
// Do some stuff...
next();
});
我不太确定它为什么会有所帮助,但清除队列会给你带来你期望的结果
$('#hi').keyup(function() {
console.log("keyup");
$(".hi").delay(1000).queue(function() {
console.log("erase");
$(this).html("").clearQueue();
})
});