Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Исключение заданных дат в календаре


Автор: webaurora 7.5.2006, 19:24
Умные люди!!

Пожалуйста, помогите глупенькой девочке!!!     
У меня есть замечательный функционирующий календарь JavaScript.  Функционирует это чудо посредством трех Javascript и одного CSS файла. 

В документе реализуется таким образом:

Код
<html><head><title>My Calendar</title>

<style type="text/css">@import url(calendar-win2k-cold-1.css);</style>
<script type="text/javascript" src="calendar.js"></script>
<script type="text/javascript" src="calendar-en.js"></script>
<script type="text/javascript" src="calendar-setup.js"></script>

</head><body>
<form ...>
  <input type="text" id="data" name="data" readonly="1" />
  <img src="cal.gif" id="trigger"
     style="cursor: pointer;"
     title="Date selector"/>
</form>
<script type="text/javascript">
 
  Calendar.setup(
    {
      inputField  : "data",         // ID of the input field
      ifFormat    : "%d.%m.%Y",    // the date format
      button      : "trigger",       // ID of the button
align          :    "cr",

 dateStatusFunc : ourDateStatusFunc
     }
  );
</script></body></html>

То бишь, щелкаешь по рисунку и выскакивает календарь.

Мне нужно исключить (скажем, отметить другим цветом) вручную заданные даты. Вот в таком виде оно тоже работает:

Код

<html>
<head>
<title>My Calendar</title>

<style type="text/css">@import url(calendar-win2k-cold-1.css);</style>
<script type="text/javascript" src="calendar.js"></script>
<script type="text/javascript" src="calendar-en.js"></script>
<script type="text/javascript" src="calendar-setup.js"></script>

<style type="text/css">
  .special { background-color: #E1143B; color: #1466E1; }
</style>
</head><body>
<form ...>
  <input type="text" id="data" name="data" readonly="1">
  <img src="cal.gif" id="trigger"
     style="cursor: pointer;"
     title="Date selector"/>
</form>

<script type="text/javascript">
var SPECIAL_DAYS = {
    0 : [ 13, 24 ],        // special days in January
  4 :[ 1, 6, 8, 12, 18 ],    // special days in March
    8 : [ 21, 11 ]        // special days in September
  };

  function dateIsSpecial(year, month, day) {
    var m = SPECIAL_DAYS[month];
    if (!m) return false;
    for (var i in m) if (m[i] == day) return true;
    return false;
  };

 function ourDateStatusFunc(date, y, m, d) {
    if (dateIsSpecial(y, m, d))
      return "special";
    else
      return false; // other dates are enabled
      // return true if you want to disable other dates
  };
  Calendar.setup(
    {
      inputField  : "data",         // ID of the input field
      ifFormat    : "%d.%m.%Y",    // the date format
      button      : "trigger",       // ID of the button
align          :    "cr",

 dateStatusFunc : ourDateStatusFunc
     }
  );
</script></body></html>

Но проблема в том, что в таком случае помечаются заданные числа месяца ВО ВСЕХ ГОДАХ, а мне нужно только вручную определенные годы. Уже изрисовала этот несчастный скрипт вдоль и впоперек, а оно не работает  

Помогите, пожалуйста, если можете!!!

Заранее огромное спасибо.

 Модератор:  Пользуемся кнопкой "Код" 

Автор: 12345c 7.5.2006, 22:16
И как в этом разобраться без исходных кодов? (calendar.js , ...)

Без них понятно, что в календаре есть функция выделения оссбых дат. Вам нужно дописать скрипт до того, чтобы он понимал усложнённый формат особых дат (например, 2006:[8:[13]] ). 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)