Javascript keyup只工作一次

Javascript keyup只工作一次,javascript,jquery,Javascript,Jquery,当我在文本框(#hi)中键入类似“Hello”的内容时,按键只对第一个字母有效,然后它不会消失。您可以使用超时而不是延迟: $("#hi").keypress(function() { $(".hi").html("Writing..."); }); $('#hi').keyup(function() { $(".hi").delay(1000).queue(function() { $(this).html(""); }); }); 下面是一个工作示例

当我在文本框(#hi)中键入类似“Hello”的内容时,按键只对第一个字母有效,然后它不会消失。

您可以使用超时而不是延迟:

$("#hi").keypress(function() {
    $(".hi").html("Writing...");
});
$('#hi').keyup(function() {
    $(".hi").delay(1000).queue(function() {
        $(this).html("");
    });
});
下面是一个工作示例:


这里的想法是设置一个超时,以便在按键笔划一秒钟后删除“Writing…”文本。如果在该秒钟内进行了新的按键笔划,则清除先前的超时并设置新的超时。这样,只有当用户停止键入超过1秒时,文本才会被删除。

我不太清楚为什么它会有帮助,但清除队列将产生您期望的结果

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);
});​

您没有调用
下一个

从jQuery1.4开始,调用的函数被传递给另一个函数 函数作为第一个参数。调用时,此选项将自动执行 将下一个项目出列并保持队列移动。我们把它当作 如下:


你真的不想在每次按键时排队等待1s的延迟吗?
$('#hi').keyup(function() {
    console.log("keyup");
    $(".hi").delay(1000).queue(function() {
        console.log("erase");
        $(this).html("").clearQueue();
    })
});​
$("#test").queue(function(next) {
    // Do some stuff...
    next();
});