Помогите доработать скрипт
Здравствуйте.
Помогите пожалуйста доработать скрипт на сайте http://studyrussianinrussia.com/constructor на втором шаге (выбор даты записи). Сейчас скрипт позволяет выбрать только любые понедельники любого месяца. А нужно, что бы можно было выбирать любой массив дат, который будет задаваться заранее, к примеру, 20 ноября 2011 г, 18 декабря 2011 г. Вот сам код: jQuery('#datepicker').datepicker({ changeMonth: true, changeYear: true, minDate: 0, dateFormat: 'mm-dd-yy', altField: '#constructor_depdate', altFormat: 'dd-MM-yy', showOtherMonths: true, yearRange: '2010:2015', onSelect: function() { jQuery('#page_2 button.btn_next').removeAttr('disabled'); setTimeout('disableDays()', 1); }, onChangeMonthYear: function() { setTimeout('disableDays()', 1); } }); }); //disable unselectable days function disableDays(){ exclude = '2'; jQuery('table.ui-datepicker-calendar tr').each(function(){ jQuery(this).find('td:not(:eq('+exclude+'))'). addClass('ui-datepicker-unselectable ui-state-disabled'). attr('onclick','return false;').find('a'). each(function(){ d = jQuery(this).text(); jQuery(this).replaceWith('<span class="ui-state-default">'+d+'</span>'); }); }); } |
Примени к td фильтр
|
К td не получится фильтр применить, т.к. в таблице содержатся даты предыдущих месяцев, следовательно, нумерация td от начала таблицы сбита.
Поэтому даже ни каких соображений у меня нет(( |
jenya, ты бы напрягся хоть чуть-чуть... Да примерчик тестовый тут смастерил...
Или деньги начинай копить для оплаты решения твоей проблемы... ;) |
Не понял о чем ты...
Меня интересует обычный календарь, в котором нужно сделать активной только одну определенную дату. Но так как в календаре отображаются числа не только активного месяца но и предыдущего и последующего, то нумерация ячеек в таблице сбита, то есть номер ячейки и число месяца расходятся, следовательно, у меня возникла сложность с написанием фильтра. Мне нужна просто идея, а не реализация. Спасибо |
Цитата:
Например такое представление даты ДД.ММ.ГГГ особо не пофильтруешь по периоду... А вот если представить дату как число (прошедших дней с какого-либо дня) - то число прекрасно "фильтруется в интервале" других двух чисел... |
Я же подсказал уже
у тебя уже есть jQuery(this).find('td:not(:eq('+exclude+'))'). Замени на // фильтр будет переберать всё что нашла операци find(td) jQuery(this).find('td').filter(function(index){ if ($(this.html()==13) return false // в ячейки есть число 13, исключаем эту ячейку else return true; // там какое то другое число, оставляем ячейку // Тоесть если вернёш false элемент исключится, true останется // данный пример исключит все клетки с числом 13 }) .append("hello");// делаем чтонибудь с неисключёнными ячейками В примере выше мы работает со значением 13, у тебя не одно значение а целый массив Относительно поиска значения в массиве почитай это |
Такая комбинация не работает:
jQuery('table.ui-datepicker-calendar tr').each(function(){ jQuery(this).find('td').filter(function(index){ if ($(this.html()==13) return false else return true; }) .append("hello"); }); |
if (
$(this.html()==13) - скобку бы сюда ещё :) return false else return true; |
Че то не работает все равно фильтр.
Делаю, как ты сказал: jQuery('table.ui-datepicker-calendar tr').each(function(){ jQuery(this).find('td').filter(function(index){ if ($(this.html())==13) return false else return true; }) . addClass('ui-datepicker-unselectable ui-state-disabled'). attr('onclick','return false;').find('a'). each(function(){ d = jQuery(this).text(); jQuery(this).replaceWith('<span class="ui-state-default">'+d+'</span>'); }); }); Мне кажется ошибка в $(this.html()) Я еще вот этот фильтр нашел jQuery(this).find('td:not(:contains(13))'). Может проще его использовать? Вот только если делать contains(2), то будет закрыта не только вторая ячейка, но и те, у которых в id есть цифра 2. Можно ли как то сделать строгое соответствие, через какие-нибудь спец символы? |
Часовой пояс GMT +3, время: 20:18. |