Подтвердить что ты не робот

JQuery UI - Datepicker - Скрыть год

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

Скрытие года в текстовом поле достаточно просто, код, показанный ниже, сделает это. Я в тупике о том, как скрыть год от всплывающего окна, поэтому он сказал бы "Апрель" вместо "Апрель 2010".

$(function() {
        $("#beginDateRange").datepicker({ dateFormat: 'mm/dd' });
});

<input type="text" name="beginDateRange" id="beginDateRange" />

Любая помощь будет принята с благодарностью.

4b9b3361

Ответ 1

Я не думаю, что этот параметр выставлен va api. Я верю, что самый простой способ - изменить таблицу стилей. Измените класс ui-datepicker-year на display: none Другой вариант - отредактировать источник, чтобы он вообще не отображался, для этого вы можете удалить эту часть кода:

 // year selection
if (secondary || !changeYear)
html += '<span class="ui-datepicker-year">' + drawYear + '</span>';
else {
// determine range of years to display
var years = this._get(inst, 'yearRange').split(':');
var thisYear = new Date().getFullYear();
var determineYear = function(value) {
var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :
(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :
parseInt(value, 10)));
return (isNaN(year) ? thisYear : year);
};
var year = determineYear(years[0]);
var endYear = Math.max(year, determineYear(years[1] || ''));
year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
html += '<select class="ui-datepicker-year" ' +
'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
'>';
for (; year <= endYear; year++) {
html += '<option value="' + year + '"' +
(year == drawYear ? ' selected="selected"' : '') +
'>' + year + '</option>';
}
html += '</select>';
}

Я не пытался удалить код, но он должен работать. Я попытался спрятать его с помощью css, и это действительно работает (в Firefox все равно:))

НТН

Ответ 2

Я наткнулся на эту тему в своем поиске хорошего способа сделать это, и вот что я придумал.

в моем css у меня есть

.BirthdayDatePicker .ui-datepicker-year
{
 display:none;   
}

и вот как я настроил своих финалистов, что я не хочу показывать год:

$('.DateTextBox.NoYear').datepicker({
            beforeShow: function (input, inst) {

                inst.dpDiv.addClass('BirthdayDatePicker');
            },
            onClose: function(dateText, inst){
                inst.dpDiv.removeClass('BirthdayDatePicker');
            }
        });

В основном я добавляю класс непосредственно перед его отображением и снимаю его, когда он скрывает его, так что другие сборщики дат на странице не влияют на него.

просто заставлять кого-либо когда-либо скрывать год только на определенных сборщиках на странице и не хочет возиться с внутренностями jQuery.

Ответ 3

Очень старый вопрос, но мне просто нужно было сделать это сам и здесь альтернативный метод, который может быть полезен кому-то; быстрое и грязное исправление, которое позволит вашим другим финалистам продолжить работу, если вам не нужна функция changeYear, чтобы установить changeYear на true на datepickers, которые вы НЕ хотите, чтобы отображался год, затем добавьте CSS

select.ui-datepicker-year { display:none }

Ответ 5

Атрибут

changeYear:false;

select.ui-datepicker-year { display:none }

иногда меняет выпадающий список на диапазон. <span></span> Поэтому добавьте этот код css.

span.ui-datepicker-year { display:none }