0

私はすでに私が見ているほとんどのソリューションを実行しましたが、それは私のものでは機能しません。

これが私のコードです:

function regenerateDatePickers()
{
  var length = $( ".forduplication" ).length;
  alert( length );
  for ( var i = 1 ; i <= length ; i++ ) {
    $( "#endDate" + i ).removeClass( "hasDatepicker" );
    $( "#endDate" + i ).datepicker();
  }
}

元の日付ピッカー フィールドのみが機能しています。クローンされたものはそうではありません。奇妙なことは、動的に作成された「選択された」* フィールドが機能していることです。

*選択済み http://harvesthq.github.com/chosen/

編集 - HTML コードを追加

<tr class="forduplication">
  <td>
    ...
    ...<!--lots of other HTML codes-->
    ...
  </td>
  <td><input id="endDate1" name="endDatefield1" size="10"></td>
  ...
</tr>
4

2 に答える 2

4

更新 06/01/15

.live() はサポートされなくなりました。.on()を使用すると、これを解決できます。

$('body')
        .on('click', '.datePick', function() {
            $(this).datepicker();
        })
        .on('focus', '.datePick', function() {
            $(this).datepicker();
        });

livefocusinを使用できます

すべての入力フィールドのクラスを用意します。この場合datePick、クラスとして使用しました

$('input.datePick').live('focusin', function() {
    $(this).datepicker();
});​

お役に立てれば

于 2012-05-15T04:25:30.543 に答える
0

それを行う1つの方法は、クリックするたびにdatepickerを破棄して再割り当てすることですが、パフォーマンスの問題があります

$('input[id^="endDate"]').live('click', function() {
    $(this).datepicker('destroy').datepicker({showOn:'focus'}).focus();
});

機能しますが、入力をクリックするたびに日付ピッカーを削除して追加します。したがって、次のように入力を複製した直後にこれを実行できるとよいでしょう

....clone().datepicker('destroy').datepicker({showOn:'focus'}); 

次に、その要素を必要な場所に追加します。

于 2012-05-15T04:37:19.087 に答える