Ошибка с датчиком выбора jquery UI, используя только месяцы и годы - PullRequest
0 голосов
/ 19 октября 2011

Я нашел фрагмент кода ниже на SOF ранее сегодня.

$("input[name=startDate], input[name=endDate]").datepicker({
    minDate: new Date("2008-09-01"), 
    maxDate: "+5Y",
    changeMonth: true,
    changeYear: true,
    showButtonPanel: false,
    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) {
        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', 'monthNames'));
            $(this).datepicker('option', 'defaultDate', new Date(year, month));
            $(this).datepicker('setDate', new Date(year, month, 1));
        }
    }
});

Как вы можете видеть, я хотел бы использовать их на 2 разных входах, чтобы иметь возможность поиска между 2 заданными месяцами и годами.

Существует проблема, когда я нажимаю один и тот же вход 2 раза;

  • Допустим, я выбираю 10.2011
  • Если я нажимаю 2 раза, яМожно выбрать от 01.2010 до 12.2010
  • Если я нажму в третий раз, я могу выбрать от 01.2009 до 12.2009

Это продолжается до тех пор, пока не достигнет значения minDate ( 2008 ).

Я буду очень рад, если вы поможете мне с исправлениемэтот баг.

1 Ответ

2 голосов
/ 20 октября 2011

Виновником является присвоение month внутри beforeShow. Он пытается получить читаемые названия месяцев от DatePicker, например, «Июль». Но то, что он действительно хочет, это просто число, представляющее месяц. Итак, просто измените эту строку на:

  var month = datestr.substring(0, datestr.length-5) - 1;

Смотрите демо здесь: http://jsfiddle.net/william/GyP2u/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...