0

次のような問題があります: フィールドにバインドされた jQuery 日付ピッカーがあり<input>ます。私が欲しいのは、入力フィールド「MM/dd/yyyy」の標準の日付表示の代わりに、現在選択されている日の週の開始と終了を表示できるようにすることです。

2012 年 12 月 25 日が選択されている場合、入力フィールドに「12 月 24 日 - 12 月 30 日」と表示します。

開始/終了の曜日とテキストの書式設定を計算することは問題ではありません。私はすでにそれを持っています。私が抱えている問題は、入力フィールドの値をカスタムテキスト表現に設定しようとするときです

$("#datepickerInput").val('custom text')

日付ピッカーの日付は、以前に設定された値を保持するのではなく、今日の日付に設定されます。

どういうわけかこれを達成する方法はありますか?

ありがとう

4

3 に答える 3

1

ここでのデモ:http://jsfiddle.net/2h7Sj/

@Palashからロジックの一部を借用しました(ただし、バグを修正しましたgetMonday)。getSunday

このソリューションでは、特定の日付選択し、日付範囲を選択できます。

HTML

<input type="text" id="dateRange" />
<input type="hidden" id="hiddenDate" />​

JavaScript

$('#dateRange').datepicker({
    altField: '#hiddenDate',
    firstDay: 1,
    onSelect: function(dateText, dateRange) {
        var dateRange = $(dateRange);

        var months       = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
                            "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
            hiddenDate = $('#hiddenDate'),
            theDate = new Date(dateText),
            dayOfTheWeek = theDate.getDay(),
            mondayOffset = theDate.getDate() - dayOfTheWeek + (dayOfTheWeek == 0 ? -6 : 1),
            sundayOffset = theDate.getDate() - dayOfTheWeek + (dayOfTheWeek == 0 ? 0 : 7),
            monday       = new Date(theDate.setDate(mondayOffset)),
            sunday       = new Date(theDate.setDate(sundayOffset)),
            mondayText   = months[monday.getMonth()] + '. ' + monday.getDate(),
            sundayText   = months[sunday.getMonth()] + '. ' + sunday.getDate(),
            rangeText    = mondayText + ' - ' + sundayText;

        $(this).val(rangeText);
        $(dateRange).data('rangetext', rangeText);
    },
    beforeShow: function(dateRange) {
        var hiddenDate = $('#hiddenDate');
        $(dateRange).val(hiddenDate.val());
    },
    onClose: function(selectedDateText, dateRange) {
        dateRange = $(dateRange);

        if($(this).val() == '') {
            $('#hiddenDate').val('');
        } else {
            if(selectedDateText.indexOf('-') < 0 && dateRange.data('rangetext')) {
                console.log('data-rangetext', dateRange.data('rangetext'));
                $(this).val(dateRange.data('rangetext'));
            }
        }
    }
});​
于 2012-12-26T18:35:51.603 に答える
1

これを試して:

var d = $('#datepickerInput').datepicker('getDate');
$('#datepickerInput').val(getMonday(d) + ' - ' + getSunday(d));

デモはこちら

于 2012-12-25T18:17:57.053 に答える