jQuery UI DatePicker для показу лише місяця року


374

Я використовую інструмент вибору дати jQuery для відображення календаря у всьому додатку. Я хочу знати, чи можу я використовувати його для відображення місяця та року (травень 2010 р.), А не календаря?


16
Отже, ви хочете вибрати місяць?
крапка

Використовуєте jQueryUI DatePicker?
wpjmurray

Так. jQueryUI DatePicker
Aanu

6
це не відповідь на ваше запитання, але у нас це зараз, виглядає набагато краще: eternicode.github.io/bootstrap-datepicker/…
Рубен

завантажувач дати завантажувача видається припиненим репо, і проблеми накопичуються без помітної роботи, що входить у їх виправлення ...
kumarharsh

Відповіді:


424

Ось хак (оновлений усім файлом .html):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
    <link rel="stylesheet" type="text/css" media="screen" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css">
    <script type="text/javascript">
        $(function() {
            $('.date-picker').datepicker( {
            changeMonth: true,
            changeYear: true,
            showButtonPanel: true,
            dateFormat: 'MM yy',
            onClose: function(dateText, inst) { 
                $(this).datepicker('setDate', new Date(inst.selectedYear, inst.selectedMonth, 1));
            }
            });
        });
    </script>
    <style>
    .ui-datepicker-calendar {
        display: none;
    }
    </style>
</head>
<body>
    <label for="startDate">Date :</label>
    <input name="startDate" id="startDate" class="date-picker" />
</body>
</html>

EDIT jsfiddle для наведеного вище прикладу: http://jsfiddle.net/DBpJe/7755/

EDIT 2 Додає значення місячного року до поля введення лише при натисканні кнопки Готово. Також дозволяє видалити значення поля введення, що неможливо в полі вище http://jsfiddle.net/DBpJe/5103/

EDIT 3 оновлено Краще рішення на основі рішення rexwolf вниз.
http://jsfiddle.net/DBpJe/5106


14
Виклик "setDate" повторно відкриє програму вибору у деяких браузерах. Щоб цього не допустити, вимкнено та включено вибирач: $ (this) .datepicker ('disabled'); $ (this) .datepicker ('setDate', нова дата (рік1, місяць1, 1)); $ (this) .datepicker ('enable');
Sven Sönnichsen

1
@Sven тут альтернатива:$(this).val($.datepicker.formatDate('MM yy', new Date(year, month, 1)));
ThiamTeck

1
Я намагаюся використовувати це рішення, але використання getDate на панелі дат повертається лише сьогодні. Як справи?
supertopi

1
Я бачу, що більшість прикладів використовують вбудовані стилі на самій сторінці. Це буде проблемою, якщо якимось чином вам потрібно більше календарів (наприклад, кожен з різними налаштуваннями) на одній сторінці. Я вважаю за краще додавати стилі у файл .css як такий: #ui-datepicker-div.noCalendar .ui-datepicker-calendar, #ui-datepicker-div.noCalendar .ui-datepicker-header a {display: none;} #ui-datepicker-div.noCalendar .ui-datepicker-header .ui-datepicker-title{width: 100%; margin: 0;} А потім використовуйте Javascript для маніпулювання поведінкою:$("#ui-datepicker-div").addClass('noCalendar');
poweratom

1
На наведеному вище прикладі Якщо я хочу очистити текстове поле, я не можу. Хтось може мені допомогти.
Бік

83

Цей код працює для мене бездоганно:

<script type="text/javascript">
$(document).ready(function()
{   
    $(".monthPicker").datepicker({
        dateFormat: 'MM yy',
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,

        onClose: function(dateText, inst) {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $(this).val($.datepicker.formatDate('MM yy', new Date(year, month, 1)));
        }
    });

    $(".monthPicker").focus(function () {
        $(".ui-datepicker-calendar").hide();
        $("#ui-datepicker-div").position({
            my: "center top",
            at: "center bottom",
            of: $(this)
        });
    });
});
</script>

<label for="month">Month: </label>
<input type="text" id="month" name="month" class="monthPicker" />

Вихід:

введіть тут опис зображення


Як можна встановити значення цього календаря.
Рафік малек

62

@ Бен Келер , це префект! Я вніс незначну модифікацію, щоб використання одного примірника вибору дат не раз працювало як очікувалося. Без цієї модифікації дата неправильно розбирається, а попередньо вибрана дата не виділяється.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
    <link rel="stylesheet" type="text/css" media="screen" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css">
    <script type="text/javascript">
    $(function() {
        $('.date-picker').datepicker( {
            changeMonth: true,
            changeYear: true,
            showButtonPanel: true,
            dateFormat: 'MM yy',
            onClose: function(dateText, inst) { 
                var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                $(this).datepicker('setDate', new Date(year, month, 1));
            },
            beforeShow : function(input, inst) {
                var datestr;
                if ((datestr = $(this).val()).length > 0) {
                    year = datestr.substring(datestr.length-4, datestr.length);
                    month = jQuery.inArray(datestr.substring(0, datestr.length-5), $(this).datepicker('option', 'monthNamesShort'));
                    $(this).datepicker('option', 'defaultDate', new Date(year, month, 1));
                    $(this).datepicker('setDate', new Date(year, month, 1));
                }
            }
        });
    });
    </script>
    <style>
    .ui-datepicker-calendar {
        display: none;
        }
    </style>
</head>
<body>
    <label for="startDate">Date :</label>
    <input name="startDate" id="startDate" class="date-picker" />
</body>
</html>

Ця відповідь здебільшого правильна. Однак мені довелося змінити MM на M, щоб вибрати правильний місяць, коли дата вже обрана.
Чазак

18

Наведені вище відповіді досить хороші. Моя єдина скарга на те, що ви не можете очистити значення, як тільки воно було встановлено. Також я віддаю перевагу підключенню модуля exte-jquery-like-a-plugin.

Для мене це ідеально:

$.fn.monthYearPicker = function(options) {
    options = $.extend({
        dateFormat: "MM yy",
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        showAnim: ""
    }, options);
    function hideDaysFromCalendar() {
        var thisCalendar = $(this);
        $('.ui-datepicker-calendar').detach();
        // Also fix the click event on the Done button.
        $('.ui-datepicker-close').unbind("click").click(function() {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            thisCalendar.datepicker('setDate', new Date(year, month, 1));
        });
    }
    $(this).datepicker(options).focus(hideDaysFromCalendar);
}

Тоді викликайте так:

$('input.monthYearPicker').monthYearPicker();

2
врешті-решт я забороняю це, оскільки це непрацездатно, оскільки події onSelect та / або onChangeMonthYear та / або onClose або не спрацьовують, або не отримують правильних значень, або, якщо це буде відмінено, змусять віджет перестати працювати
knocte

10
<style>
.ui-datepicker table{
    display: none;
}

<script type="text/javascript">
$(function() {
    $( "#manad" ).datepicker({
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'yy-mm',
        onClose: function(dateText, inst) { 
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $(this).datepicker('setDate', new Date(year, month, 1));
        },
        beforeShow : function(input, inst) {
            if ((datestr = $(this).val()).length > 0) {
                actDate = datestr.split('-');
                year = actDate[0];
                month = actDate[1]-1;
                $(this).datepicker('option', 'defaultDate', new Date(year, month));
                $(this).datepicker('setDate', new Date(year, month));
            }
        }
    });
});

Це вирішить проблему =) Але я хотів часуФормат yyyy-mm

Проте спробував лише у FF4


"yy" у JQuery - чотиризначний рік. Якщо ви цього хочете, ви щойно цього досягли.
Paweł Dyda


8

Ось що я придумав. Він приховує календар, не потребуючи додаткового блоку стилів, і додає чітку кнопку для вирішення проблеми неможливості очистити значення, натиснувши на вхід. Також чудово працює з декількома вибирачами місяців на одній сторінці.

HTML:

<input type='text' class='monthpicker'>

JavaScript:

$(".monthpicker").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "yy-mm",
    showButtonPanel: true,
    currentText: "This Month",
    onChangeMonthYear: function (year, month, inst) {
        $(this).val($.datepicker.formatDate('yy-mm', new Date(year, month - 1, 1)));
    },
    onClose: function(dateText, inst) {
        var month = $(".ui-datepicker-month :selected").val();
        var year = $(".ui-datepicker-year :selected").val();
        $(this).val($.datepicker.formatDate('yy-mm', new Date(year, month, 1)));
    }
}).focus(function () {
    $(".ui-datepicker-calendar").hide();
}).after(
    $("<a href='javascript: void(0);'>clear</a>").click(function() {
        $(this).prev().val('');
    })
);

5

Мені потрібен був вибральник місяця / року для двох полів (From & To), і коли було вибрано одне, Max / Min було встановлено на іншому ... a la pick the datume of air ticket. У мене виникли проблеми з встановленням max і min ... Дати в іншому полі стираються. Завдяки декільком вищевказаним постам ... я нарешті зрозумів це. Ви повинні встановити параметри та дати в дуже конкретному порядку.

Дивіться цю загадку для повного рішення: Вибір місяця / року @ JSFiddle

Код:

var searchMinDate = "-2y";
var searchMaxDate = "-1m";
if ((new Date()).getDate() <= 5) {
    searchMaxDate = "-2m";
}
$("#txtFrom").datepicker({
    dateFormat: "M yy",
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    showAnim: "",
    minDate: searchMinDate,
    maxDate: searchMaxDate,
    showButtonPanel: true,
    beforeShow: function (input, inst) {
        if ((datestr = $("#txtFrom").val()).length > 0) {
            var year = datestr.substring(datestr.length - 4, datestr.length);
            var month = jQuery.inArray(datestr.substring(0, datestr.length - 5), "#txtFrom").datepicker('option', 'monthNamesShort'));
        $("#txtFrom").datepicker('option', 'defaultDate', new Date(year, month, 1));
                $("#txtFrom").datepicker('setDate', new Date(year, month, 1));
            }
        },
        onClose: function (input, inst) {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $("#txtFrom").datepicker('option', 'defaultDate', new Date(year, month, 1));
            $("#txtFrom").datepicker('setDate', new Date(year, month, 1));
            var to = $("#txtTo").val();
            $("#txtTo").datepicker('option', 'minDate', new Date(year, month, 1));
            if (to.length > 0) {
                var toyear = to.substring(to.length - 4, to.length);
                var tomonth = jQuery.inArray(to.substring(0, to.length - 5), $("#txtTo").datepicker('option', 'monthNamesShort'));
                $("#txtTo").datepicker('option', 'defaultDate', new Date(toyear, tomonth, 1));
                $("#txtTo").datepicker('setDate', new Date(toyear, tomonth, 1));
            }
        }
    });
    $("#txtTo").datepicker({
        dateFormat: "M yy",
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        showAnim: "",
        minDate: searchMinDate,
        maxDate: searchMaxDate,
        showButtonPanel: true,
        beforeShow: function (input, inst) {
            if ((datestr = $("#txtTo").val()).length > 0) {
                var year = datestr.substring(datestr.length - 4, datestr.length);
                var month = jQuery.inArray(datestr.substring(0, datestr.length - 5), $("#txtTo").datepicker('option', 'monthNamesShort'));
                $("#txtTo").datepicker('option', 'defaultDate', new Date(year, month, 1));
                $("#txtTo").datepicker('setDate', new Date(year, month, 1));
            }
        },
        onClose: function (input, inst) {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $("#txtTo").datepicker('option', 'defaultDate', new Date(year, month, 1));
            $("#txtTo").datepicker('setDate', new Date(year, month, 1));
            var from = $("#txtFrom").val();
            $("#txtFrom").datepicker('option', 'maxDate', new Date(year, month, 1));
            if (from.length > 0) {
                var fryear = from.substring(from.length - 4, from.length);
                var frmonth = jQuery.inArray(from.substring(0, from.length - 5), $("#txtFrom").datepicker('option', 'monthNamesShort'));
                $("#txtFrom").datepicker('option', 'defaultDate', new Date(fryear, frmonth, 1));
                $("#txtFrom").datepicker('setDate', new Date(fryear, frmonth, 1));
            }

        }
    });

Також додайте це до блоку стилів, як згадувалося вище:

.ui-datepicker-calendar { display: none !important; }

5

Я поєднав багато вищезазначених гарних відповідей і дійшов до цього:

    $('#payCardExpireDate').datepicker(
            {
                dateFormat: "mm/yy",
                changeMonth: true,
                changeYear: true,
                showButtonPanel: true,
                onClose: function(dateText, inst) { 
                    var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                    var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                    $(this).datepicker('setDate', new Date(year, month, 1)).trigger('change');
                },
                beforeShow : function(input, inst) {
                    if ((datestr = $(this).val()).length > 0) {
                        year = datestr.substring(datestr.length-4, datestr.length);
                        month = datestr.substring(0, 2);
                        $(this).datepicker('option', 'defaultDate', new Date(year, month-1, 1));
                        $(this).datepicker('setDate', new Date(year, month-1, 1));
                    }
                }
            }).focus(function () {
                $(".ui-datepicker-calendar").hide();
                $("#ui-datepicker-div").position({
                    my: "center top",
                    at: "center bottom",
                    of: $(this)
                });
            });

Це доводиться працювати, але стикається з багатьма помилками, тому я був змушений латати в декількох місцях датчика:

if($.datepicker._get(inst, "dateFormat") === "mm/yy")
{
    $(".ui-datepicker-calendar").hide();
}

patch1: в _showDatepicker: згладити приховування;

patch2: у _checkOffset: для виправлення позиціонування вибору місяця (інакше, коли поле знаходиться внизу браузера, перевірка зміщення відключена);

patch3: in onClose _hideDatepicker: інакше при закритті поля спалахнуть на дуже короткий період, що дуже дратує.

Я знаю, що моя помилка була далеко не хорошою, але зараз вона працює. Сподіваюся, це допомагає.


JUst додайте цей рядок до beforeShow: {inst.dpDiv.addClass ('month_year_datepicker')}. миті дати припиняться :). Також я думаю, що фокус тоді не знадобиться
Парагв,

5

Додайте ще одне просте рішення

 $(function() {
    $('.monthYearPicker').datepicker({
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'M yy'
    }).focus(function() {
        var thisCalendar = $(this);
        $('.ui-datepicker-calendar').detach();
        $('.ui-datepicker-close').click(function() {
var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
thisCalendar.datepicker('setDate', new Date(year, month, 1));
        });
    });
});

http://jsfiddle.net/tmnasim/JLydp/
Особливості :

  • відображати лише місяць / рік
  • Додає значення місячного року до поля введення лише при натисканні кнопки Готово
  • Немає поведінки "повторно", натиснувши "Готово"
    ------------------------------------
    інше рішення, яке працює добре для datepicker та monthpicker на тій же сторінці: (також уникайте помилок mutiple натисканням на попередню кнопку в IE, яка може статися, якщо ми використовуємо функцію фокусування)
    JS

4

Це тільки я або це не працює як слід в IE (8)? Дата змінюється при натисканні кнопки "Готово", але вибирач дати відкриється знову, поки ви фактично не натиснете десь на сторінці, щоб звільнити фокус на полі введення ...

Я шукаю вирішення цього питання.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
    <link rel="stylesheet" type="text/css" media="screen" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css">
<script type="text/javascript">
$(function() {
    $('.date-picker').datepicker( {
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'MM yy',
        onClose: function(dateText, inst) { 
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $(this).datepicker('setDate', new Date(year, month, 1));
        }
    });
});
</script>
<style>
.ui-datepicker-calendar {
    display: none;
    }
</style>
</head>
<body>
    <label for="startDate">Date :</label>
    <input name="startDate" id="startDate" class="date-picker" />
</body>
</html>

1
$ (this) .datepicker ('відключити'); $ (this) .datepicker ('setDate', нова дата (рік, місяць, 1)); $ (this) .datepicker ('enable'); Вирішує проблему.
Том Ван Шчур

1
Це не відповідь
sisharp

4

Якщо ви шукаєте місяць для вибору, спробуйте цей jquery.mtz.monthpicker

Це добре працювало на мене.

options = {
    pattern: 'yyyy-mm', // Default is 'mm/yyyy' and separator char is not mandatory
    selectedYear: 2010,
    startYear: 2008,
    finalYear: 2012,
    monthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
};

$('#custom_widget').monthpicker(options);

Посилання мертва. Цей сайт неможливо дістати | Не вдалося знайти DNS-адресу сервера lucianocosta.info.
Панг

1
Ось оновлене посилання: lucianocosta.com.br/jquery.mtz.monthpicker
Себастьян С.

Оновлене посилання також порушено.
нащ

4

Як і багато інших, я стикався з численними проблемами, намагаючись це зробити, і лише комбінація розміщених рішень, і врешті-решт великий злом, щоб зробити його ідеальним, придумав мені рішення.

Проблеми з іншими рішеннями в цій темі, які я спробував:

  1. Вибравши нову дату в панелі дат, також буде змінено (внутрішню) дату інших вибирачів дат, тому коли ви знову відкриєте інші (або спробуєте отримати їх дату), вони матимуть іншу дату, ніж та, яка відображається у призначеному введенні. -поле.
  2. Вибір дат не "запам'ятав" дату, коли її відкрили знову.
  3. Код жонглювання датами, що використовується підстроковим рядком, таким чином він не був сумісний з усіма форматами
  4. "Місячний вибір" змінив поле введення лише після його закриття, а не коли змінилися значення.
  5. Поле введення не оновлюється правильно, якщо ви введете неправильно відформатований рядок введення для дати, а потім натисніть «Закрити» на панелі вибору дати.
  6. Я не можу мати звичайних вибирачів дат, які показують дні, на тій же сторінці, що й місячні, які не показують дні.

Нарешті я знайшов спосіб виправити всі ці проблеми . Перші чотири можна виправити, обережно ставлячись до того, як ви посилаєтесь на підбирачі дат і місяців у їхньому внутрішньому коді, і, звичайно, роблячи оновлення вибраних вручну. Це ви можете бачити в прикладах інстанцій біля нижньої частини. П’яту проблему можна допомогти, додавши якийсь спеціальний код до функцій вибору дати.

ПРИМІТКА. Вам не потрібно використовувати наступні сценарії вибору місяця, щоб виправити перші три проблеми у вашому звичайному виборі дат. Просто використовуйте скрипт для вибору дати внизу цієї публікації.

Тепер, щоб скористатись місячними виборцями та виправити останню проблему, нам потрібно відокремити збирачів дат та виборів місяців. Ми могли б отримати один з небагатьох доповнень jpiker-інтерфейсу jQuery-інтерфейсу користувача, але деяким не вистачає гнучкості / можливостей локалізації, деяким не вистачає підтримки анімації ... так що робити? Розкачайте свій "власний" з коду дати-вибору! Це дає вам повноцінно функціонуючий місяць, з усіма функціональними можливостями дата-вибору, без відображення днів.

Я надав js-скрипт monthpicker та супровідний CSS-скрипт , використовуючи описаний нижче метод, з кодом jQuery-UI v1.11.1. Просто скопіюйте ці фрагменти коду у два нові файли, monthpicker.js та monthpicker.css відповідно.

Якщо ви хочете почитати про досить простий процес, за допомогою якого я перетворив дату вибору в місяць, перейдіть до останнього розділу.


Тепер додайте на сторінку збирачів дат та вибору місяців!

Ці наступні фрагменти коду JavaScript працюють з декількома вибирачами дат та / або місячними виборцями на сторінці без вищезазначених проблем! Виправлено загалом за допомогою "$ (це)." багато :)

Перший сценарій призначений для звичайного вибору дат, а другий - для "нових" місячних.

Подальше коментар. , Який дає змогу створити якийсь елемент для очищення поля введення, викрадений з відповіді Пола Річардса.

Я використовую формат "MM yy" у своєму місячному виборі та формат "yy-mm-dd" у своєму датчику, але це повністю сумісно з усіма форматами , тому ви можете користуватися будь-яким потрібним. Просто змініть параметр 'dateFormat'. Стандартні параметри "showButtonPanel", "showAnim" та "yearRange", звичайно, необов'язкові та підлаштовуються під ваші побажання.


Додавання вибору дати

Ідентифікатор вибору дат. Ця іде від 90 років тому і до сьогодні. Це допомагає вам утримувати правильність поля введення, особливо якщо встановити параметри defaultDate, minDate та maxDate, але він може обробити це, якщо цього не зробити. Він буде працювати з будь-якою формою, яку ви вибрали.

        $('#MyDateTextBox').datepicker({
            dateFormat: 'yy-mm-dd',
            changeMonth: true,
            changeYear: true,
            showButtonPanel: true,
            showMonthAfterYear: true,
            showWeek: true,
            showAnim: "drop",
            constrainInput: true,
            yearRange: "-90:",
            minDate: new Date((new Date().getFullYear() - 90), new Date().getMonth(), new Date().getDate()),
            maxDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()),
            defaultDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()),

            onClose: function (dateText, inst) {
                // When onClose is called after we have clicked a day (and not clicked 'Close' or outside the datepicker), the input-field is automatically
                // updated with a valid date-string. They will always pass, because minDate and maxDate are already enforced by the datepicker UI.
                // This try is to catch and handle the situations, where you open the datepicker, and manually type in an invalid date in the field,
                // and then close the datepicker by clicking outside the datepicker, or click 'Close', in which case no validation takes place.
                try {
                    // If datepicker can parse the date using our formatstring, the instance will automatically parse
                    // and apply it for us (after the onClose is done).
                    // If the input-string is invalid, 'parseDate' will throw an exception, and go to our catch.
                    // If the input-string is EMPTY, then 'parseDate' will NOT throw an exception, but simply return null!
                    var typedDate = $.datepicker.parseDate($(this).datepicker('option', 'dateFormat'), $(this).val());

                    // typedDate will be null if the entered string is empty. Throwing an exception will force the datepicker to
                    // reset to the last set default date.
                    // You may want to just leave the input-field empty, in which case you should replace 'throw "No date selected";' with 'return;'
                    if (typedDate == null)throw "No date selected";

                    // We do a manual check to see if the date is within minDate and maxDate, if they are defined.
                    // If all goes well, the default date is set to the new date, and datepicker will apply the date for us.
                    var minDate = $(this).datepicker("option", "minDate");
                    var maxDate = $(this).datepicker("option", "maxDate");
                    if (minDate !== null && typedDate < minDate) throw "Date is lower than minDate!";
                    if (maxDate !== null && typedDate > maxDate) throw "Date is higher than maxDate!";

                    // We update the default date, because the date seems valid.
                    // We do not need to manually update the input-field, as datepicker has already done this automatically.
                    $(this).datepicker('option', 'defaultDate', typedDate);
                }
                catch (err) {
                    console.log("onClose: " + err);
                    // Standard behavior is that datepicker does nothing to fix the value of the input field, until you choose
                    // a new valid date, by clicking on a day.
                    // Instead, we set the current date, as well as the value of the input-field, to the last selected (and
                    // accepted/validated) date from the datepicker, by getting its default date. This only works, because
                    // we manually change the default date of the datepicker whenever a new date is selected, in both 'beforeShow'
                    // and 'onClose'.
                    var date = $(this).datepicker('option', 'defaultDate');
                    $(this).val($.datepicker.formatDate($(this).datepicker('option', 'dateFormat'), date));
                    $(this).datepicker('setDate', date);
                }
            },

            beforeShow: function (input, inst) {
                // beforeShow is particularly irritating when initializing the input-field with a date-string.
                // The date-string will be parsed, and used to set the currently selected date in the datepicker.
                // BUT, if it is outside the scope of the minDate and maxDate, the text in the input-field is not
                // automatically updated, only the internal selected date, until you choose a new date (or, because
                // of our onClose function, whenever you click close or click outside the datepicker).
                // We want the input-field to always show the date that is currently chosen in our datepicker,
                // so we do some checks to see if it needs updating. This may not catch ALL cases, but these are
                // the primary ones: invalid date-format; date is too early; date is too late.
                try {
                    // If datepicker can parse the date using our formatstring, the instance will automatically parse
                    // and apply it for us (after the onClose is done).
                    // If the input-string is invalid, 'parseDate' will throw an exception, and go to our catch.
                    // If the input-string is EMPTY, then 'parseDate' will NOT throw an exception, but simply return null!
                    var typedDate = $.datepicker.parseDate($(this).datepicker('option', 'dateFormat'), $(this).val());

                    // typedDate will be null if the entered string is empty. Throwing an exception will force the datepicker to
                    // reset to the last set default date.
                    // You may want to just leave the input-field empty, in which case you should replace 'throw "No date selected";' with 'return;'
                    if (typedDate == null)throw "No date selected";

                    // We do a manual check to see if the date is within minDate and maxDate, if they are defined.
                    // If all goes well, the default date is set to the new date, and datepicker will apply the date for us.
                    var minDate = $(this).datepicker("option", "minDate");
                    var maxDate = $(this).datepicker("option", "maxDate");
                    if (minDate !== null && typedDate < minDate) throw "Date is lower than minDate!";
                    if (maxDate !== null && typedDate > maxDate) throw "Date is higher than maxDate!";

                    // We update the input-field, and the default date, because the date seems valid.
                    // We also manually update the input-field, as datepicker does not automatically do this when opened.
                    $(this).val($.datepicker.formatDate($(this).datepicker('option', 'dateFormat'), typedDate));
                    $(this).datepicker('option', 'defaultDate', typedDate);
                }
                catch (err) {
                    // Standard behavior is that datepicker does nothing to fix the value of the input field, until you choose
                    // a new valid date, by clicking on a day.
                    // We want the same behavior when opening the datepicker, so we set the current date, as well as the value
                    // of the input-field, to the last selected (and accepted/validated) date from the datepicker, by getting
                    // its default date. This only works, because we manually change the default date of the datepicker whenever
                    // a new date is selected, in both 'beforeShow' and 'onClose', AND have a default date set in the datepicker options.
                    var date = $(this).datepicker('option', 'defaultDate');
                    $(this).val($.datepicker.formatDate($(this).datepicker('option', 'dateFormat'), date));
                    $(this).datepicker('setDate', date);
                }
            }
        })
    //.after( // this makes a link labeled "clear" appear to the right of the input-field, which clears the text in it
    //    $("<a href='javascript: void(0);'>clear</a>").click(function() {
    //        $(this).prev().val('');
    //    })
    //)
    ;

Додавання вибору місяця

Додайте файл monthpicker.js та файл monthpicker.css на сторінку, яку ви хочете використовувати.

Ініціатива вибору місяця Значення, отримане з цього місяця, завжди є ПЕРШИМ днем ​​вибраного місяця. Починається в поточному місяці і становить від 100 років тому і 10 років у майбутньому.

    $('#MyMonthTextBox').monthpicker({
        dateFormat: 'MM yy',
        changeMonth: true,
        changeYear: true,
        showMonthAfterYear: true,
        showAnim: "drop",
        constrainInput: true,
        yearRange: "-100Y:+10Y",
        minDate: new Date(new Date().getFullYear() - 100, new Date().getMonth(), 1),
        maxDate: new Date((new Date().getFullYear() + 10), new Date().getMonth(), 1),
        defaultDate: new Date(new Date().getFullYear(), new Date().getMonth(), 1),

        // Monthpicker functions
        onClose: function (dateText, inst) {
            var date = new Date(inst.selectedYear, inst.selectedMonth, 1);
            $(this).monthpicker('option', 'defaultDate', date);
            $(this).monthpicker('setDate', date);
        },

        beforeShow: function (input, inst) {
            if ($(this).monthpicker("getDate") !== null) {
                // Making sure that the date set is the first of the month.
                if($(this).monthpicker("getDate").getDate() !== 1){
                    var date = new Date(inst.selectedYear, inst.selectedMonth, 1);
                    $(this).monthpicker('option', 'defaultDate', date);
                    $(this).monthpicker('setDate', date);
                }
            } else {
                // If the date is null, we reset it to the defaultDate. Make sure that the defaultDate is always set to the first of the month!
                $(this).monthpicker('setDate', $(this).monthpicker('option', 'defaultDate'));
            }
        },
        // Special monthpicker function!
        onChangeMonthYear: function (year, month, inst) {
            $(this).val($.monthpicker.formatDate($(this).monthpicker('option', 'dateFormat'), new Date(year, month - 1, 1)));
        }
    })
    //.after( // this makes a link labeled "clear" appear to the right of the input-field, which clears the text in it
    //    $("<a href='javascript: void(0);'>clear</a>").click(function() {
    //        $(this).prev().val('');
    //    })
    //)
    ;

Це воно! Ось і все, що потрібно, щоб зробити місячний підбір.

Я не можу зробити з цим роботу jsfiddle, але це працює для мене в моєму проекті ASP.NET MVC. Просто виконайте те, що ви зазвичай робите, щоб додати дату вибору дати на свою сторінку, і включіть описані вище сценарії, можливо, змінивши селектор (що означає $ ("# MyMonthTextBox")) на щось, що працює для вас.

Я сподіваюся, що це комусь допоможе.

Посилання на папки для додаткових налаштувань вибору дати та місяця:

  1. Вибір місяця працює в останній день місяця . Дата, яку ви отримаєте від цього місяця, завжди буде останнім днем ​​місяця.

  2. Два співпрацівники, що співпрацюють ; 'start' працює з першого числа місяця, а 'end' працює над останнім місяцем. Вони обидва обмежені один одним, тому вибір місяця на "кінець", який знаходиться до вибраного місяця на "старт", змінить "початок" таким же місяцем, що і "кінець". І навпаки. ОПЦІОНАЛЬНО: Коли вибираєте місяць на "старт", "minDate" on "end" встановлюється на цей місяць. Щоб видалити цю функцію, прокоментуйте один рядок у onClose (прочитайте коментарі).

  3. Два співавтори, які співпрацюють ; Вони обидва обмежені один одним, тому вибір дати "закінчення", що передує вибраній даті "старту", змінить "початок" таким же місяцем, що і "кінець". І навпаки. ОПЦІОНАЛЬНО: Коли ви вибираєте дату на "старт", "minDate" on "end" встановлюється на цю дату. Щоб видалити цю функцію, прокоментуйте один рядок у onClose (прочитайте коментарі).


Як я змінив DatePicker на статус MonthPicker

Я взяв увесь код JavaScript від jquery-ui-1.11.1.js, що стосується їх вибору дат, вставив його в новий js-файл і замінив такі рядки:

  • "datepicker" ==> "monthpicker"
  • "Datepicker" ==> "Вибір місяця"
  • "Вибір дати" ==> "Вибір місяця"
  • "Вибір дати" ==> "Вибір місяця"

Потім я видалив частину for-loop, яка створює весь поділ ui-datepicker-Calendar (div, який інші рішення приховують за допомогою CSS). Це можна знайти у функції _generateHTML: (inst).

Знайдіть рядок із написом:

"</div><table class='ui-datepicker-calendar'><thead>" +

Позначте все від після закриття div-тега та до (та не включаючи) рядка, де написано:

drawMonth++;

Зараз це буде нещасно, бо нам потрібно закрити деякі речі. Після цього закриваючи div-тег від раніше, додайте це:

";

Код тепер повинен бути добре зшитий разом. Ось фрагмент коду, який показує, що ви повинні закінчити:

...other code...

calender += "<div class='ui-monthpicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
                (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") +
                (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") +
                this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
                    row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
                "</div>";
            drawMonth++;
            if (drawMonth > 11) {
                drawMonth = 0;
                drawYear++;
            }

...other code...

Потім я скопіював / вставив код з jquery-ui.css, що стосується доборщиків дат, у новий CSS-файл, і замінив наступні рядки:

  • "datepicker" ==> "monthpicker"

3

після копання jQueryUI.com для датника, ось мій висновок та відповідь на ваше запитання.

Не перший, я б сказав , НЕ на ваше запитання. Ви не можете використовувати панель вибору дати jQueryUI лише для вибору місяця та року. Він не підтримується. Він не має для цього функції зворотного дзвінка.

Але ви можете зламати його, щоб відображати лише місяць і рік, використовуючи css, щоб приховати дні і т. Д. І я думаю, не буде сенсу все-таки викликати необхідність натискання дат, щоб вибрати дату.

Я можу сказати, що ви просто повинні використовувати інший підбірник дат. Як і те, що запропонував Роджер.


3

У мене була проблема з вибором дати, змішаною з вибором місяця. Я вирішив це так.

    $('.monthpicker').focus(function()
    {
    $(".ui-datepicker-calendar").show();
    }).datepicker( {
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'MM/yy',
        create: function (input, inst) { 

         },
        onClose: function(dateText, inst) { 
            var month = 1+parseInt($("#ui-datepicker-div .ui-datepicker-month :selected").val());           
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();

        }
    });

3

Якщо хтось хоче, що також для кількох календарів не дуже важко додати цю функціональність до jquery ui. зі спрощеним пошуком:

x+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&C==0?c?f:n:"")+(

додайте це перед x

var accl = ''; if(this._get(a,"justMonth")) {accl = ' ui-datepicker-just_month';}

шукати

<table class="ui-datepicker-calendar

і замінити його на

<table class="ui-datepicker-calendar'+accl+'

також шукати

this._defaults={

замінити його на

this._defaults={justMonth:false,

для css слід використовувати:

.ui-datepicker table.ui-datepicker-just_month{
    display: none;
}

після цього все зроблено, просто перейдіть до потрібних функцій initpіint і виберіть налаштування var

$('#txt_month_chart_view').datepicker({
    changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'MM yy',
        justMonth: true,
        create: function(input, inst) {
            $(".ui-datepicker table").addClass("badbad");
        },
        onClose: function(dateText, inst) {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $(this).datepicker('setDate', new Date(year, month, 1));
        }
});

justMonth: true тут ключовий :)



2

Вище вдосконалено майже ідеальну відповідь BrianS:

  1. Я повторно застосував набір значень у шоу, тому що я думаю, що це насправді робить його трохи більш читабельним у цьому випадку (хоча зауважте, я використовую трохи інший формат)

  2. Мій клієнт не хотів календаря, тому я додав додаток для показу / приховування класу, щоб зробити це, не зачіпаючи жодних інших вибирачів дат. Вилучення класу відбувається за таймером, щоб уникнути резервного копіювання таблиці, коли фіксатор дати згасає, що, здається, дуже помітно в IE.

РЕДАКТИРУВАННЯ: Залишилася вирішити цю проблему, що немає способу спорожнити датчик - очистіть поле та натисніть геть, і воно переповниться вибраною датою.

EDIT2: мені не вдалося вирішити це добре (тобто без додавання окремої кнопки Очистити поруч із входом), тому в кінцевому підсумку просто скориставшись цим: https://github.com/thebrowser/jquery.ui.monthpicker - якщо хто може отримати стандартний інтерфейс користувача, щоб зробити це, що було б дивним.

    $('.typeof__monthpicker').datepicker({
        dateFormat: 'mm/yy',
        showButtonPanel:true,
        beforeShow: 
            function(input, dpicker)
            {                           
                if(/^(\d\d)\/(\d\d\d\d)$/.exec($(this).val()))
                {
                    var d = new Date(RegExp.$2, parseInt(RegExp.$1, 10) - 1, 1);

                    $(this).datepicker('option', 'defaultDate', d);
                    $(this).datepicker('setDate', d);
                }

                $('#ui-datepicker-div').addClass('month_only');
            },
        onClose: 
            function(dt, dpicker)
            {
                setTimeout(function() { $('#ui-datepicker-div').removeClass('month_only') }, 250);

                var m = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                var y = $("#ui-datepicker-div .ui-datepicker-year :selected").val();

                $(this).datepicker('setDate', new Date(y, m, 1));
            }
    });

Вам також потрібно це правило стилю:

#ui-datepicker-div.month_only .ui-datepicker-calendar {
display:none
}

2

Мені сподобалась відповідь @ user1857829 та його "підхід-розширення jquery-like-a-plugin". Я щойно змінив літт, щоб коли-небудь змінити місяць чи рік, вибирач насправді записує дату в полі. Я виявив, що мені подобається така поведінка, коли я її трохи використаю.

jQuery.fn.monthYearPicker = function(options) {
  options = $.extend({
    dateFormat: "mm/yy",
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    showAnim: "",
    onChangeMonthYear: writeSelectedDate
  }, options);
  function writeSelectedDate(year, month, inst ){
   var thisFormat = jQuery(this).datepicker("option", "dateFormat");
   var d = jQuery.datepicker.formatDate(thisFormat, new Date(year, month-1, 1));
   inst.input.val(d);
  }
  function hideDaysFromCalendar() {
    var thisCalendar = $(this);
    jQuery('.ui-datepicker-calendar').detach();
    // Also fix the click event on the Done button.
    jQuery('.ui-datepicker-close').unbind("click").click(function() {
      var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
      var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
      thisCalendar.datepicker('setDate', new Date(year, month, 1));
      thisCalendar.datepicker("hide");
    });
  }
  jQuery(this).datepicker(options).focus(hideDaysFromCalendar);
}

2

У мене були певні труднощі з прийнятою відповіддю, і жоден інший не міг використовуватись з мінімальними зусиллями як основу. Отже, я вирішив підробити останню версію прийнятої відповіді, поки вона не задовольнить принаймні мінімальні стандарти кодування / повторного використання JS.

Ось спосіб вирішення набагато чистіше , ніж третій (останній) випуск з Ben Koehler загальноприйнятому відповідь «s. Більше того, це:

  • працювати не тільки з mm/yyформатом, але і з будь-яким іншим, включаючи ОП MM yy.
  • не приховувати календар інших вибирачів дат на сторінці.
  • НЕ неявно забруднюють глобальний об'єкт JS з datestr, month, і yearт.д. змінні.

Перевір:

$('.date-picker').datepicker({
    dateFormat: 'MM yy',
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    onClose: function (dateText, inst) {
        var isDonePressed = inst.dpDiv.find('.ui-datepicker-close').hasClass('ui-state-hover');
        if (!isDonePressed)
            return;

        var month = inst.dpDiv.find('.ui-datepicker-month').find(':selected').val(),
            year = inst.dpDiv.find('.ui-datepicker-year').find(':selected').val();

        $(this).datepicker('setDate', new Date(year, month, 1)).change();
        $('.date-picker').focusout();
    },
    beforeShow: function (input, inst) {
        var $this = $(this),
            // For the simplicity we suppose the dateFormat will be always without the day part, so we
            // manually add it since the $.datepicker.parseDate will throw if the date string doesn't contain the day part
            dateFormat = 'd ' + $this.datepicker('option', 'dateFormat'),
            date;

        try {
            date = $.datepicker.parseDate(dateFormat, '1 ' + $this.val());
        } catch (ex) {
            return;
        }

        $this.datepicker('option', 'defaultDate', date);
        $this.datepicker('setDate', date);

        inst.dpDiv.addClass('datepicker-month-year');
    }
});

А все, що вам потрібно, це наступний CSS десь навколо:

.datepicker-month-year .ui-datepicker-calendar {
    display: none;
}

Це воно. Сподіваємось, що вищесказане заощадить час для подальших читачів.


1
Просто і FYI. Рядок 'inst.dpDiv.addClass (' datepicker-місяць-рік ');' додасть цілий місяць-рік до календарного поділу дата-вибору, тобто, якщо є інші поля дати з вибором дати, вони перестануть працювати через це. Оскільки в календарі є лише один роздільник, було б цікаво додати "$ (". Datepicker-month-year "). RemoveClass (" datepicker-month-year ");" використовуючи заздалегідь показ на будь-яких інших вибирачах дат, для яких потрібен традиційний календар. АБО, видаліть клас, коли втратите фокус. Але я не міг знайти нічого, пов’язаного з цим, у апі
Джонні Бігуд

1
Це повна відповідь, яку кожен повинен використовувати. Найбільшою проблемою, яку я вирішив, було те, що спливаюче введення дати завжди за замовчуванням на поточний місяць та рік, незалежно від того, що вже є. Ця відповідь зафіксувала це.
Алекс F

1

Я знаю, що це трохи пізня відповідь, але я отримав ту саму проблему за пару днів до цього, і я прийшов із гарним та рівним рішенням. По- перше , я знайшов цю вибору дати тут

Тоді я щойно оновив клас CSS (jquery.calendarPicker.css), який поставляється з таким прикладом:

.calMonth {
  /*border-bottom: 1px dashed #666;
  padding-bottom: 5px;
  margin-bottom: 5px;*/
}

.calDay 
{
    display:none;
}

Плагін запускає DateChanged події, коли ви щось змінюєте, тому не має значення, що ви не натискаєте на день (і це підходить як вибір року та місяця)

Сподіваюся, це допомагає!



1

Я спробував різні запропоновані тут рішення, і вони спрацювали прекрасно, якщо ви просто хотіли падіння падіння.

Найкращий (на вигляд і т. Д. ) 'Picker' ( https://github.com/thebrowser/jquery.ui.monthpicker ), запропонований тут, - це в основному копія старої версії jquery-ui datepicker із переписаним _generateHTML. Однак я виявив, що він більше не чудово грає з поточним jquery-ui (1.10.2) і мав інші проблеми (не закривається на esc, не закривається на відкритті інших віджетів, має стилі з твердим кодом).

Замість того, щоб намагатися виправити цей місяць, і не намагатися повторити той самий процес із останньою датою вибору, я пішов із підключенням до відповідних частин існуючого вибору дат.

Це включає переосмислення:

  • _generateHTML (для створення розмітки вибору місяця)
  • parseDate (як це не подобається, коли немає компонента дня),
  • _selectDay (як datepicker використовує .html (), щоб отримати значення дня)

Оскільки це запитання трохи старе і вже добре відповів, ось лише перелік _selectDay, щоб показати, як це було зроблено:

jQuery.datepicker._base_parseDate = jQuery.datepicker._base_parseDate || jQuery.datepicker.parseDate;
jQuery.datepicker.parseDate = function (format, value, settings) {
    if (format != "M y") return jQuery.datepicker._hvnbase_parseDate(format, value, settings);
    // "M y" on parse gives error as doesn't have a day value, so 'hack' it by simply adding a day component
    return jQuery.datepicker._hvnbase_parseDate("d " + format, "1 " + value, settings);
};

Як було сказано, це старе питання, але я вважав його корисним, тому хотів додати зворотній зв'язок із альтернативним рішенням.


0

для місяця, за допомогою JQuery v 1.7.2, у мене є такий javascript, який робить саме це

$l("[id$=txtDtPicker]").monthpicker({
showOn: "both",
buttonImage: "../../images/Calendar.png",
buttonImageOnly: true,
pattern: 'yyyymm', // Default is 'mm/yyyy' and separator char is not mandatory
monthNames: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']
});


0

Дякуємо за рішення Бена Келера.

Однак у мене виникли проблеми з декількома екземплярами вибирачів дат, деякі з них потребували підбору дня. Рішення Бена Келера (у редакції 3) працює, але приховує вибір дня у всіх випадках. Ось оновлення, яке вирішує цю проблему:

$('.date-picker').datepicker({
    dateFormat: "mm/yy",
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    onClose: function(dateText, inst) {
        if($('#ui-datepicker-div').html().indexOf('ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all ui-state-hover') > -1) {
            $(this).datepicker(
                'setDate',
                new Date(
                    $("#ui-datepicker-div .ui-datepicker-year :selected").val(),
                    $("#ui-datepicker-div .ui-datepicker-month :selected").val(),
                    1
                )
            ).trigger('change');
            $('.date-picker').focusout();
        }
        $("#ui-datepicker-div").removeClass("month_year_datepicker");
    },
    beforeShow : function(input, inst) {
        if((datestr = $(this).val()).length > 0) {
            year = datestr.substring(datestr.length-4, datestr.length);
            month = datestr.substring(0, 2);
            $(this).datepicker('option', 'defaultDate', new Date(year, month-1, 1));
            $(this).datepicker('setDate', new Date(year, month-1, 1));
            $("#ui-datepicker-div").addClass("month_year_datepicker");
        }
    }
});

-2

Використовуйте onSelectзворотний дзвінок і видаліть частину року вручну та встановіть текст у полі вручну


3
Я думаю, ви не читаєте питання. Аану хоче "відобразити місяць і рік (травень 2010 року), а не календар".
Рейгель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.