8

cssクラスを介して日付ピッカーとして定義する入力フィールドがあります。この入力フィールドを複製して、複製された入力も日付ピッカーになるようにします。

さまざまな情報源から読んだ後、私は次のコードが機能するはずであると信じるようになりましたが、機能しません。私は誰かが私が間違っていることを理解するのを手伝ってくれることを望んでいました:)

<input type="text" id="date" name="date" class="calendar" />
<input type="button" id="clone" name="clone" value="Clone dates" />

そしてここにjavascriptがあります:

<script type="text/javascript">
$(document).ready(function(){

 $('.calendar').datepicker();

 $('#clone').click(function()
 {
  $('.calendar:last').clone().append().insertAfter('.calendar:last');
 });

});

</script>

これまでのところ、入力フィールドは複製され、最後のインスタンスの後に挿入されますが、日付ピッカーは機能しません。クローン関数に「true」を渡そうとしましたが、instが定義されていないというエラーが発生しました。

どんな助けもいただければ幸いです:)

4

4 に答える 4

14

これに変更します:

$('.calendar:last').clone(false).removeClass('hasDatepicker').insertAfter('.calendar:last').datepicker();
于 2010-03-01T20:40:17.370 に答える
5

残念ながら、上記の答えについてはもうコメントできませんが、コードはまだ失敗しています!日付ピッカーは複製された入力要素に表示されますが、元の入力フィールドで選択された日付値を使用し、複製された入力フィールドを空白のままにします。

編集:

次のコードを使用して修正しました。

$('.datum',clone).removeClass("hasDatepicker").attr('id',"").datepicker();

(ラッパーのクローンを作成し、そのラッパーの「データム」入力フィールドのみを対象としていることに注意してください)

上記のようにクラスを削除した後、複製された入力要素のIDも削除します。元の入力フィールドと同じなので、日付ピッカーボックスで選択した日付で元の入力フィールドを更新していました。

于 2011-01-25T20:57:09.643 に答える
0

次の変更を加えましたが、機能します。

前:

 $('#clone').click(function()
 {
  $('.calendar:last').clone().append().insertAfter('.calendar:last');
 });

後:

 $('#clone').click(function()
 {
  $('.calendar:last').clone().append().insertAfter('.calendar:last').attr('id',"");
 });
于 2013-01-16T02:34:08.547 に答える
0

これは少し遅いかもしれませんが、上記のすべての提案は私にはうまくいきませんでした、私はこれに対する簡単な解決策を思いつきました。

まず、問題の原因は次のとおりです。JQueryはdatepickerを要素IDに割り当てます。要素のクローンを作成している場合は、同じIDもクローンされる可能性があります。これはjQueryが好きではありません。クリックした入力フィールドに関係なく、null参照エラーを受け取るか、最初の入力フィールドに日付が割り当てられる可能性があります。

解決:

1)datepickerを破棄します2)すべての入力フィールドに新しい一意のIDを割り当てます3)各入力にdatepickerを割り当てます

入力が次のようなものであることを確認してください

<input type="text" name="ndate[]" id="date1" class="n1datepicker">

クローンを作成する前に、datepickerを破棄してください

$('.n1datepicker').datepicker('destroy');

クローンを作成したら、これらの行も追加します

var i = 0;
$('.n1datepicker').each(function () {
    $(this).attr("id",'date' + i).datepicker();
    i++;
});

そして魔法が起こります

于 2013-06-17T17:35:18.120 に答える