2012-03-06 9 views
0

にバインドされていません。どのようにしてこれらの入力オブジェクトを動的にバインドして、ドキュメントの準備ができたときに存在していた入力ボックスと同じ機能を発揮させることができますか?それはあなたのアプリケーションが必要とするものかどう動的に追加入力ボックスを動的に私は、このリンクからdocument.readyで呼び出さjqueryの入力modernizer機能を使用してい

var add= '<input type="text" size="75" placeholder="This is a Comment" id="txtComment" />' 
+ '<br /><input type="text" placeholder="2012-03-24" id="txtDate" /><br /><button id="submit">Submit</button>'; 

$(this).html(addTargetForm); 


function modernizer_init() { 
    if (!Modernizr.input.placeholder) { 

     $('[placeholder]').onfocus(function() { 
      var input = $(this); 
      if (input.val() == input.attr('placeholder')) { 
       input.val(''); 
       input.removeClass('placeholder'); 
      } 
     }).blur(function() { 
      var input = $(this); 
      if (input.val() == '' || input.val() == input.attr('placeholder')) { 
       input.addClass('placeholder'); 
       input.val(input.attr('placeholder')); 
      } 
     }).blur(); 
     $('[placeholder]').parents('form').submit(function() { 
      $(this).find('[placeholder]').each(function() { 
       var input = $(this); 
       if (input.val() == input.attr('placeholder')) { 
        input.val(''); 
       } 
      }) 
     }); 

    } 
} 
+0

元の機能をバインドするコードを教えてください。 –

+0

拘束力のあるコードを掲示してください。 – Eli

+0

本体に追加されました。 – Garrett

答えて

0

これは構造の内部ではなく、すべての手段で直接動作するはずはfunction modernizer_init() {}にそれを置きます。

のjavascript:

これはjQueryの1.7で文書本体(またはあなたが好きなら、よりローカルコンテナ)、にイベントとfocusIn(フォーカス)とfocusout(ぼかし)の取り扱いを委託することで動作し
$("body").on('focusin', '[placeholder]', function(evt) { 
    var $input = $(evt.target); 
    if ($input.val() == $input.attr('placeholder')) { 
     $input.val(''); 
     $input.removeClass('placeholder'); 
    } 
}).on('focusout', '[placeholder]', function(evt) { 
    var $input = $(evt.target); 
    if ($input.val() == '' || $input.val() == $input.attr('placeholder')) { 
     $input.addClass('placeholder'); 
     $input.val($input.attr('placeholder')); 
    } 
}).on('submit', 'form', function(evt) { 
    var $form = $(evt.target); 
    $form.find('[placeholder]').each(function() { 
     var $input = $(this); 
     if ($input.val() == $input.attr('placeholder')) { 
      $input.val(''); 
     } 
    }); 
}); 
$('[placeholder]').focusout(); 

.1現在は廃止予定のbind().live().delegate()の効果があります。

は、それが働いて参照してください:http://jsfiddle.net/wg2eX/2/

関連する問題