У меня есть сложная веб-страница, которая является частью веб-сайта дневника, которым пользуются более 100 пользователей в компании-клиенте. Сайт построен в PHP, а также включает в себя HTML и JavaScript. На этой странице у меня есть несколько вкладок, и каждая вкладка имеет множество кнопок, а также другие элементы управления. Все это прекрасно работало в течение ряда лет, но недавно мы обнаружили проблему, которая материализуется только при определенных обстоятельствах. По сути, на странице есть одна вкладка, где пользователь может настроить список дат, которые необходимо ввести в дневник для определенного типа записи. У нас есть всплывающие календари на этой вкладке, где наши пользователи могут выбирать даты начала и окончания для списка дат. Проблема в том, что когда этот список дат проходит около 180 дат, кнопки для изменения предыдущего / следующего месяца и года просто перестают работать. решить проблему, но я получаю ту же проблему с каждым альтернативным способом, который я пробовал. Кроме того, на мой взгляд, нет никакого смысла в том, что количество дат в списке вызывает проблему, потому что код просто не может знать, сколько дат в списке в точке с изменением года или месяца. , Теперь я дам ключевые биты кода для этого.
код для всплывающего календаря (только кнопка предыдущего года), все это настроено в таблице HTML:
<td colspan='1' align='center'>
<?php
$prev_year = $_SESSION['popup_2_year'] - 1;
echo "<span id='prev_year_point'><img onclick='submitPreviousYearChange(".$prev_year.")' src='../img/left.gif'></img></span>";
?>
</td>
Код с домашней страницы сайта (индекс. php) - это только ключевые разделы, взятые из гораздо большего файла. Этот первый бит находится в верхней части файла, перед вставкой любых HTML и т. Д. c.
if (isset($_POST["previous_year"]) && is_numeric($_POST["previous_year"]))
{
$_SESSION['popup_2_year']--;
$_SESSION['calendar_popup_2_show'] = true;
}
следующий бит из раздела JavaScript на страницах HTML head section:
<script type='text/javascript'>
<!--
function submitPreviousYearChange(prev_year)
{
diary_form = document.forms['diary'];
diary_form_element = diary_form.elements['previous_year'];
diary_form_element.value = prev_year;
document.diary.submit();
}
-->
</script>
наконец, этот бит находится ближе к концу раздела тела страницы. Это скрытая переменная POST, которая используется для хранения значения «предыдущий год». это значение передается из всплывающего календаря в функцию JavaScript, показанную выше. Функция JavaScript сохраняет значение года в скрытой переменной post, чтобы оно могло использоваться первым битом индекса. php код, показанный выше.
<input type='hidden' name='previous_year' value=''>
Как я уже сказал это все работает нормально, если мы не получим слишком много дат в списке дат. Я понимаю, что это, вероятно, не имеет смысла, но если кто-нибудь может дать мне предложения по его решению, они будут с благодарностью.