2

jquery datepicker が複製された行で機能しないことを支援する多くのページを調べましたが、見つけた提案を特定のケースに変換できないようです。Fiddle のリンクは次のとおりです: http://jsfiddle.net/BE5Lr/2893/ アドバイスをいただければ幸いです。

$(function() {
  $( "#datepicker" ).datepicker();
});

var i = 1;
$("button").click(function() {
  $("table tr:first").clone().removeClass('hasDatepicker').find("input").each(function() {
    $(this).attr({
      'id': function(_, id) { return id + i },
      'name': function(_, name) { return name + i },
      'value': ''

    });
  }).end().appendTo("table");

  i++;

});
4

3 に答える 3

2

クリック イベントで $(...).datepicker() を再度呼び出します。

クラス「mydatepickers」を入力に追加します

$(".mydatepickers").datepicker();

于 2013-06-26T21:59:29.800 に答える
2

ClaudioZ はほぼ正しかった...

mydatepickers (または任意の名前)クラスを追加する必要があります。

ただし、クリック イベントで日付ピッカー要素を再初期化する前に、まず日付ピッカー フィールドをデタッチしてから、行を (つまり、クリック ハンドラー内で) 複製する必要があります。

Russell Gがこの回答で説明しているように、これはおそらく、datepicker オブジェクトが DOM 全体で既に初期化されていると認識して中止するためです。

最後に、行を複製した後、それらをすべて再初期化します。

ここでjsFiddleを参照してください

$(document).ready(function() {

    $(".mydatepickers").datepicker();

    //$( ".mydatepickers" ).datepicker();
    $( "input.mydatepickers" ).on('click', function() {
        //alert('hi'); 
        $(this).datepicker();
    });;

    var i = 1;
    $("button").on('click', function() {
        $('.mydatepickers').datepicker('destroy');
        myTr = $("table tr:first").clone().appendTo("table");
        myTr.removeClass('hasDatepicker').find("input").each(function() {
            $(this).attr({
                'id': function(_, id) { return id + i },
                'name': function(_, name) { return name + i },
                'value': ''
            });
        });
        //myTr.find('input[id^="datep"]').addClass("mydatepickers");
         $(".mydatepickers").datepicker();
        i++;
        alert('Current value of i is: ' + i);
    });

}); //END $(document).ready()
于 2013-06-26T23:40:37.330 に答える