6

jquery datepicker のすべてのオプションを取得して、同じオプションで新しい datepicker をインスタンス化する方法は?

オプションが異なる2つの日付ピッカーを含むテーブルを複製したい。ここで例を見ることができます: http://jsfiddle.net/qwZ5x/4/

<div class="clonable">
<table><tr><td>
<input type="text" id="datepicker" />

<script>
    jQuery(document).ready(function() {
        jQuery("#datepicker").datepicker({
            showOn: "both",
            buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif"
        });
    });
</script></td><td>
<input type="text" id="datepicker2" />
<script>
    jQuery(document).ready(function() {
        jQuery("#datepicker2").datepicker();
    });
</script>
    </td></tr></table>
</div>
<a href="javascript:void(0);" id="clone">Clone</a>
var id = 0;
jQuery("#clone").on("click", function () {

var clonable = jQuery(".clonable:first").clone(true, true);
jQuery(clonable).find("input").each(function () {
    jQuery(this).attr("id", jQuery(this).attr("id") + "_" + id);

    jQuery(this).siblings('.ui-datepicker-trigger,.ui-datepicker-apply').remove();

    jQuery(this).removeClass('hasDatepicker');
    jQuery(this).datepicker({
        showOn: "both",
        buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif"
    });
});

jQuery(clonable).insertBefore("#clone");
id = id + 1;
});

オプションを1つずつ設定せずに、すべてのオプションを複製されたdatepickerに設定するにはどうすればよいですか?

どうもありがとうございました。

4

2 に答える 2

0

特定のケースでは、これを置き換えます:

jQuery(this).datepicker({
    showOn: "both",
    buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif"
});

...これとともに:

jQuery(this).datepicker(jQuery(this).datepicker('option', 'all'));

変更を加えた jsfiddle は次のとおりです: http://jsfiddle.net/puAde/

これは、オプションを保持する入力要素を複製したため機能しますが、新しいインスタンスに再適用する必要があります。

現在のオプションを取得するには、渡す必要があることに注意してください'all'(jQuery のドキュメントは間違っています)。

于 2014-03-14T14:10:24.670 に答える