2

2 つの日付範囲フォームがあります。各フォームには と の 2 つのフィールドがfromありtoます。javascript で、日付範囲の日付ピッカーの 2 つのインスタンスを作成しましたが、何らかの理由で、2 番目の日付範囲フォームでは正しく機能しません。

最初のフォームは完全に機能します。しかしfrom、2 番目のフォームのボックスで日付を選択すると、たとえば 10 月 9 日がfromボックスに表示されます。次に、2 番目のフォームのフィールドをクリックすると、to選択できる最も遠い日付は何らかの理由で 10 月 9 日になりますか?

以下に JS Fiddle があるので、何が起こっているかがわかります。私は周りを検索しましたが、2 つの日付範囲形式の実用的な例を見つけることができません。多くのデフォルトの日付ピッカーを見つけることができますが、もちろんそれらは日付範囲ではなく、異なって書かれています。それらの通常の問題は、同じ ID を使用している人々ですが、私のものはすべて異なるため、わかりません..

JS フィドル - http://jsfiddle.net/6jJ36/

4

1 に答える 1

3

ワーキングデモ http://jsfiddle.net/fxr5c/

犯人は次のとおりvar option = this.id == "invfrom" ? "minDate" : "maxDate",です。古いコードのコード行に間違ったIDがありました。つまりivnfrom、動作が逆になりました。

残りはあなたの原因を助けるはずです:)

コード

var dates = $("#from, #to").datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    dateFormat: 'dd/mm/yy',
    onSelect: function (selectedDate) {

        var option = this.id == "from" ? "minDate" : "maxDate",
            instance = $(this).data("datepicker"),
            date = $.datepicker.parseDate(
            instance.settings.dateFormat || $.datepicker._defaults.dateFormat,
            selectedDate, instance.settings);
        dates.not(this).datepicker("option", option, date);
    }
});
var invdates = $("#invfrom, #invto").datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    dateFormat: 'dd/mm/yy',
    onSelect: function (selectedDate) {

        var option = this.id == "invfrom" ? "minDate" : "maxDate",
            instance = $(this).data("datepicker"),
            date = $.datepicker.parseDate(
            instance.settings.dateFormat || $.datepicker._defaults.dateFormat,
            selectedDate, instance.settings);
        invdates.not(this).datepicker("option", option, date);
    }
});
于 2013-10-09T09:41:25.597 に答える