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;
});

如何在不一一设置选项的情况下将所有选项设置为克隆的日期选择器?

非常感谢。

4

2 回答 2

12

您可以使用以下方法获取现有日期选择器的选项:

var options = jquery('#datepicker').datepicker('option', 'all');

获得一个特定选项,例如 numberOfMonths:

var numberOfMonths = jquery('#datepicker').datepicker('option', 'numberOfMonths');
于 2013-07-18T15:53:02.840 回答
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 回答