jQuery UI - Datepicker - Скрыть год - PullRequest
       46

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

11 голосов
/ 23 апреля 2010

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

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

Ответы [ 5 ]

17 голосов
/ 12 января 2012

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

в моем 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.

6 голосов
/ 05 октября 2011

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

select.ui-datepicker-year { display:none }
6 голосов
/ 23 апреля 2010

Я не думаю, что эта опция доступна через 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 голосов
/ 04 января 2014

ВИКСМЕ Скрыть год http://jsfiddle.net/tocv/e5cvA/

CSS

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

HTML

    <div id="datepicker"></div>

</div>

JavaScript

$(function() {
    $( "#datepicker" ).datepicker({
      changeMonth: true,
      changeYear: false
    });
  });
0 голосов
/ 30 октября 2012

Атрибут

changeYear:false;

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

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

span.ui-datepicker-year { display:none }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...