JQuery UI DatePicker: пользовательские заголовки имени - PullRequest
0 голосов
/ 02 октября 2011

общая информация: я использую сборщик данных, чтобы установить часы работы магазинов ... на весь год.Для этого у меня есть кнопки, чтобы выбрать все понедельники и т. Д. За весь год, а затем у меня есть другие кнопки, которые добавляют классы.например, вы нажимаете «понедельник», который выбирает все дни года в календаре.затем вы нажимаете кнопку «класс», и все понедельники получают часы открытия «9: 00-17: 00».

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

это работает хорошо, но теперь я хочу добиться того же эффекта на недельной основе.поэтому я сделал следующее:

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

//javascript
$("#datepicker").datepicker({
...
    beforeShowDay: setHollidays,
    dayNamesMin: ['<a class="weekSelector" href="7">Zo</a>', 
                  '<a class="weekSelector" href="1">Ma</a>', 
                  '<a class="weekSelector" href="2">Di</a>', 
                  '<a class="weekSelector" href="3">Wo</a>', 
                  '<a class="weekSelector" href="4">Do</a>', 
                  '<a class="weekSelector" href="5">Vr</a>', 
                  '<a class="weekSelector" href="6">Za</a>'],
    monthNames: ['January<span class="invisible">0</span>',
  'February<input type="hidden" value="1" class="invisible"/>',
  'March<input type="hidden" value="2" class="invisible"/>', 
  'April<input type="hidden" value="3" class="invisible"/>',
  'May<input type="hidden" value="4" class="invisible"/>', 
  'June<input type="hidden" value="5" class="invisible"/>',
  'July<input type="hidden" value="6" class="invisible"/>',
  'August<input type="hidden" value="7" class="invisible"/>',
  'September<input type="hidden" value="8" class="invisible"/>',
  'October<input type="hidden" value="9" class="invisible"/>',
  'November<input type="hidden" value="10" class="invisible"/>', 
  'December<input type="hidden" value="11" class="invisible"/>'],
...
});

//selects all days of the month (for one month) that are a given week days. for example: all mondays
$("a.weekSelector").click(function () {
    selDay = $(this).attr("href"); // get the day index
    markerType = 'month'; //use in beforeShowday function to select the days

// добавлен код var container = $ (this) .parent ('. ui-datepicker-group');
alert ($ (container) .find. ( '.invisible') Val ());// конец добавленного кода $ ("# datepicker"). datepicker ("refresh");resetMultiSelect ();// сбрасываем переменные, используемые для выбора
return false;});

//setHollidays adds the correct classes the the days.

это также работает, но если дни всегда выбираются в первом месяце (то есть в январе).Потому что у меня нет доступа к месяцу.поэтому, когда я выбираю заголовок «понедельник» для месяца «март», выбираются все понедельники для января.

так, наконец, вот мой вопрос: как я могу получить месяц (или первую дату в месяце) вфункция $ ("a.weekSelector"). click?

edit: когда он закончится, он превратится в модуль drupal и, возможно, плагин jquery.

1 Ответ

0 голосов
/ 05 октября 2011

вот мой «грязный» способ исправить это (в функции щелчка):

var el = $(this);
var offset = el.offset();
var elTop = offset.top;
var elLeft = offset.left;

var arr = $("a.weekSelector[href='"+selDay+"']");   
$.each(arr, function(i, val) {
 var curTop = $(val).offset().top;
 var curLeft = $(val).offset().left;
 if((elTop == curTop) && (elLeft == curLeft))
{
selmonth = $(".invisible:eq("+i+")").val();
 }
});

, что в основном делает, это извлекает все недельные селекторы с тем же href, что и тот, который щелкнул (например, все«понедельник»), затем сравните смещение со смещением элемента, по которому щелкнули.затем я использовал идентификатор, который я получил от этого, для поиска скрытого поля.

Я пытался искать в DOM скрытое поле, но оно всегда казалось неопределенным.

...