Календарь выпадающий ошибка - PullRequest
1 голос
/ 16 сентября 2011

Это должно быть довольно просто, но я не могу это исправить: /

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

См. Здесь: http://protekco.com/index.php/en/reservation.html

И код, который его вызывает:

        echo AHtml::getMonthsSelect('imonth', (int) $month, $year, $currentMonth, $currentYear, $config->calendarDeepMonth, 'onchange="Calendars.monthNavigation(this.value)"'); ?>

$ currentYearпеременная фактического года, представленная на сайте.Мне в принципе нужно как-то добавить +1, если мы закончили конец года.Есть идеи?

Спасибо!

Редактировать: вот массив месяцев:

 function getMonthsSelect($name, $selectedMonth, $selectedYear, $month, $year, $deep, $attribs = '')
{
    $months = array(1 => JText::_('January') , 2 => JText::_('February') , 3 => JText::_('March') , 4 => JText::_('April') , 5 => JText::_('May') , 6 => JText::_('June') , 7 => JText::_('July') , 8 => JText::_('August') , 9 => JText::_('September') , 10 => JText::_('October') , 11 => JText::_('November') , 12 => JText::_('December'));

    $stop = $month + $deep;
    for ($i = $month; $i < $stop; $i ++)
        $arr[] = JHTML::_('select.option', ($key = (! ($k = $i % 12) ? 12 : $k)) . ',' . ($y = (floor(($i - $month) / 12) + $year)), ($months[$key] . '/' . $y));

    return JHTML::_('select.genericlist', $arr, $name, $attribs, 'value', 'text', $selectedMonth . ',' . $selectedYear);
}

Редактировать 3: Окончательное решение:

function getMonthsSelect($name, $selectedMonth, $selectedYear, $month, $year, $deep, $attribs = '')
{
    $months = array(1 => JText::_('January') , 2 => JText::_('February') , 3 => JText::_('March') , 4 => JText::_('April') , 5 => JText::_('May') , 6 => JText::_('June') , 7 => JText::_('July') , 8 => JText::_('August') , 9 => JText::_('September') , 10 => JText::_('October') , 11 => JText::_('November') , 12 => JText::_('December'));

    $stop = $month + $deep;
    $wheremonth = 12 - $month;
    for ($i = $month; $i < $stop; $i ++, $wheremonth--)

    if ($wheremonth >= 0) {
        $arr[] = JHTML::_('select.option', ($key = (! ($k = $i % 12) ? 12 : $k)) . ',' . ($y = (floor(($i - $month) / 12) + $year)), ($months[$key] . '/' . $y));
        }
        else {            $arr[] = JHTML::_('select.option', ($key = (! ($k = $i % 12) ? 12 : $k)) . ',' . ($y = (floor(($i - $month) / 12) + $year+1)), ($months[$key] . '/' . $y));
        }
    return JHTML::_('select.genericlist', $arr, $name, $attribs, 'value', 'text', $selectedMonth . ',' . $selectedYear);

        }

1 Ответ

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

Не уверен, как здесь работают входы, но у вас есть следующий месяц и предыдущий месяц. Вы можете реализовать переменную-счетчик, которая добавляет, когда вы нажимаете следующее, и вычитает, когда вы нажимаете предыдущую. Так что-то вроде:

$i = 1;

function datetracker() {

if($nextbtnclicked = true) {
     $i++;
} elseif($prevbtnclicked = true) {
     $i--;
}

if($i == 13) {
     $i = 1;
     $currentYear += 1;
}
}

Я просто использую примеры переменных, но вы можете реализовать счетчик в Javascript и выполнить вход в JS.

РЕДАКТИРОВАТЬ: Этот код на самом деле выглядит правильно. Не знаю, почему это не работает, но попробуйте что-то вроде этого.

function getMonthsSelect($name, $selectedMonth, $selectedYear, $month, $year, $deep, $attribs = '') 
{ 
    $months = array(1 => JText::_('January') , 2 => JText::_('February') , 3 => JText::_('March') , 4 => JText::_('April') , 5 => JText::_('May') , 6 => JText::_('June') , 7 => JText::_('July') , 8 => JText::_('August') , 9 => JText::_('September') , 10 => JText::_('October') , 11 => JText::_('November') , 12 => JText::_('December')); 

    $stop = $month + $deep;
    $newyear = false;
    for ($i = $month; $i < $stop; $i ++) {

        if($newyear) {
        $arr[] = JHTML::_('select.option', ($key = (! ($k = $i % 12) ? 12 : $k)) . ',' . ($y = (floor(($i - $month) / 12) + $year + 1)), ($months[$key] . '/' . $y));
         $newyear = false;
        } else {
        $arr[] = JHTML::_('select.option', ($key = (! ($k = $i % 12) ? 12 : $k)) . ',' . ($y = (floor(($i - $month) / 12) + $year)), ($months[$key] . '/' . $y));

        }
     if($i == 12) { $newyear = true; }
     }

    return JHTML::_('select.genericlist', $arr, $name, $attribs, 'value', 'text', $selectedMonth . ',' . $selectedYear); 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...