$("#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("");
});
});
テキストボックス (#hi) に「Hello」のように入力すると、キーアップは最初の文字に対してのみ機能し、その後は消えません。
遅延の代わりにタイムアウトを使用できます。
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/
ここでの考え方は、タイムアウトを設定して、キー ストロークの 1 秒後に "Writing..." テキストを削除することです。その秒以内に新しいキー ストロークが行われると、以前のタイムアウトがクリアされ、新しいタイムアウトが設定されます。これにより、ユーザーが 1 秒以上入力を停止した場合にのみ、テキストが削除されます。
呼び出さないことでキューをブロックしています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();
})
});