0

チェックボックスがチェックされた後、このjQueryを使用して、テキスト入力フィールドをdivに追加しています。

$('.sharewithfriends').on("click", ".manual-invite", function () {
        if ($('input[name=manual-invite]').is(':checked')) {
          $('<li style="margin-top:0;display:none"><input type="text" id="invite_email1" name="invite-email1" value="Add an E-Mail" onfocus="clearText(invite_email1);" onblur="fillText(invite_email1);"/><span><a class="add" href="">Add</a></span></li>').appendTo('#invite-emails').slideToggle();

}

onfocusおよびonblurイベントを除いて、すべて正常に機能します。次の単純な関数を呼び出します。これらの関数は、フォーカス時にフィールドをクリアし、ぼかし時にデフォルトのテキストで埋めます。

function clearText(thefield){
if (thefield.defaultValue==thefield.value)
thefield.value = ""
}

function fillText(thefield){
if (thefield.value=="")
thefield.value=thefield.defaultValue;
}

しかし、フィールドをクリックすると、明らかに定義されているにもかかわらず、「invite_email1 が定義されていません」というエラーが表示されます。

これを機能させるために何をする必要があるか知っている人はいますか?

4

1 に答える 1

5

あなたは正しい要素を参照していません。

に置き換えclearText(invite_email1);ますclearText(this);
さらに良いことに、インラインイベントを追加する代わりに、イベントリスナーをバインドします。

于 2012-05-02T09:14:25.387 に答える