jQuery DatePicker год изменить, когда выберите месяц, IE7 - PullRequest
0 голосов
/ 23 сентября 2011

Наш проект использует JSF1.2, Icefaces 1.8.2, jQuery UI компонент datepicker (версия 1.8.14). Проблема с IE7 (Firefox в порядке). Проблема произойдет в следующей последовательности: выберите дату (например, пару дней до дня). Обратите внимание, что мы установили диапазон года с 1991 по 2012 год. Наша бизнес-логика заключается в печати документа, использующего эту дату (в коде, называемом dateOfStudy) в качестве заголовка, как только это будет сделано, в обратном компоненте JSF, я очищаю поле даты календарного ввода в нуль. Теперь снова нажмите на иконку DatePicker, год по-прежнему показывает 2011 год, выберите любой предыдущий месяц (например, вернитесь к Auguest, 2011), проблема может произойти прямо здесь: год изменится на 1991 год, а не на 2011 год.

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

Кажется, что datepick нуждается в некоторой инициализации после того, как я очистил дату?

Я приложил некоторый код. У меня есть метод / опция trid, как setDate, onChangeMonthYear, beforShowDay, не может решить. Любая помощь приветствуется !!

<script type="text/javascript">
var jq = jQuery.noConflict();
jq(document).ready(function() {
    jq("[id$=fmv]").live('click', function() {
        jq(this).datepicker( {
            showOn : 'focus',
            changeMonth : true,
            changeYear : true,
            dateFormat : 'mm/dd/yy',
            yearRange : '-20:+1',
            showButtonPanel : true,
            closeText : 'Close'
        }).focus();
    });
});
</script>

<ice:inputText id="fmv"
                       style="background-image:url      ('../../../jquery/images/calendar1.png');
                       background-repeat:no-repeat;background-position:right;"
                       value="#{pItem.dateOfStudy}"
                       validator="#{pItem.validate}"
                       partialSubmit="true"
                       name="fmv"         
                       valueChangeListener="#{pItem.dateChangeListener}"> 
                       </ice:inputText>

1 Ответ

0 голосов
/ 27 сентября 2011

Когда backbean очищает или изменяет ввод текста в календаре inputText, я думаю, что это вызывает событие фокуса, и календарь перепутан под IE7. Причина, по которой я использую фокус showOn, заключается в том, что код находится в области отображения таблицы AJAX, поэтому использование отображения календаря на кнопке изображения не работает, поскольку изображение кнопки не будет отображаться при возврате обновления AJAX (календарь jQuery не будет вызываться) заставить меня использовать showOn focus. Я наконец-то решил проблему изменений в этом году, добавив следующую строку календаря обновления после финальной .focus ():

jq(this).datepicker("setDate",jq("[id$=fmv]").datepicker("getDate"));

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

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