2011-07-17 5 views
0

last.fmには、イベントを追加するときに便利な機能があります。アーティストフィールドがあり、入力を開始すると、その下に別のテキストフィールドが表示されます。その次のフィールドに入力を開始すると、その下に新しいフィールドが表示されます。私はjqueryを使用してこの機能を模倣する方法を理解しようとしていますが、最初の静止したフィールドでのみ動作させることができます。何か案は?キーを押したときに新しいテキストフィールドを作成する方法は?

編集:

alrightyので、いくつかの細かな人々がすでに持っている:

は、実際に、いや、それはそれはすべてのキーを押し

EDIT2にフィールドを追加しているので、静止いずれかにしても働いていません私の追加する問題を解決しました。今、キーを最初に押した後に初めてフィールドを追加する方法はありますか?

答えて

1

おそらく、ハンドラは動的に作成されたものではなく、最初の静的な入力にバインドするだけです。イベントバインドを行うには、.live()を使用してください。これにより、セレクタに一致する将来の要素にイベントがバインドされます。

新しいものを1つだけ追加することを確認するには、最後のテキストボックスに入力するときに追加してください。 $(this).closest(".container").next(".container").lengthをチェックして、まだ新しいテキストボックスがないことを確認します。ライブ

$("input.myClass").live("keyup", function (e) { 
    var $container = $(this).closest(".container"); 
    if (this.value && !$container.next(".container").length) { 
     var $newContainer $("<div>").insertAfter($container).addClass("container"); 
     ... 
    } 
}); 
+0

より良いです。 – evan

+0

素晴らしい、それはとても簡単です。ありがとう!少なくともそれは付加部分を解決する。 – Valhallen

+0

evanありがとう、それが世話をした! – Valhallen

0

正しい考えですが、最も近い過剰です: `:yet-` $( "最後のinput.myClass")jsFiddle

$("input").live("keyup", function(){ 
if (!$(this).next('input').length) $(this).after('<input type="text"></input>'); 
}); 
関連する問題