Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.10.2011, 09:32
Интересующийся
Отправить личное сообщение для jenya Посмотреть профиль Найти все сообщения от jenya
 
Регистрация: 27.10.2011
Сообщений: 10

Помогите доработать скрипт
Здравствуйте.
Помогите пожалуйста доработать скрипт на сайте 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>');
});
});
}
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2011, 13:22
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Примени к td фильтр
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 28.10.2011 в 13:32.
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2011, 14:51
Интересующийся
Отправить личное сообщение для jenya Посмотреть профиль Найти все сообщения от jenya
 
Регистрация: 27.10.2011
Сообщений: 10

К td не получится фильтр применить, т.к. в таблице содержатся даты предыдущих месяцев, следовательно, нумерация td от начала таблицы сбита.
Поэтому даже ни каких соображений у меня нет((
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2011, 14:58
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

jenya, ты бы напрягся хоть чуть-чуть... Да примерчик тестовый тут смастерил...

Или деньги начинай копить для оплаты решения твоей проблемы...

Последний раз редактировалось ksa, 31.10.2011 в 11:54.
Ответить с цитированием
  #5 (permalink)  
Старый 28.10.2011, 15:09
Интересующийся
Отправить личное сообщение для jenya Посмотреть профиль Найти все сообщения от jenya
 
Регистрация: 27.10.2011
Сообщений: 10

Не понял о чем ты...
Меня интересует обычный календарь, в котором нужно сделать активной только одну определенную дату.
Но так как в календаре отображаются числа не только активного месяца но и предыдущего и последующего, то нумерация ячеек в таблице сбита, то есть номер ячейки и число месяца расходятся, следовательно, у меня возникла сложность с написанием фильтра.
Мне нужна просто идея, а не реализация.
Спасибо
Ответить с цитированием
  #6 (permalink)  
Старый 28.10.2011, 15:19
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от jenya
у меня возникла сложность с написанием фильтра.
Мне нужна просто идея, а не реализация.
Идея любой фильтрации проста - нужно фильтровать "фильтруемое".

Например такое представление даты ДД.ММ.ГГГ особо не пофильтруешь по периоду...
А вот если представить дату как число (прошедших дней с какого-либо дня) - то число прекрасно "фильтруется в интервале" других двух чисел...
Ответить с цитированием
  #7 (permalink)  
Старый 28.10.2011, 15:24
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Я же подсказал уже
у тебя уже есть 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, у тебя не одно значение а целый массив
Относительно поиска значения в массиве почитай это
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 28.10.2011 в 15:37.
Ответить с цитированием
  #8 (permalink)  
Старый 31.10.2011, 11:21
Интересующийся
Отправить личное сообщение для jenya Посмотреть профиль Найти все сообщения от jenya
 
Регистрация: 27.10.2011
Сообщений: 10

Такая комбинация не работает:
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");

	});
Ответить с цитированием
  #9 (permalink)  
Старый 31.10.2011, 11:27
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

if (
$(this.html()==13)
- скобку бы сюда ещё
return false
else return true;
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #10 (permalink)  
Старый 31.10.2011, 13:50
Интересующийся
Отправить личное сообщение для jenya Посмотреть профиль Найти все сообщения от jenya
 
Регистрация: 27.10.2011
Сообщений: 10

Че то не работает все равно фильтр.
Делаю, как ты сказал:
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. Можно ли как то сделать строгое соответствие, через какие-нибудь спец символы?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите доработать скрипт Medvedoc Javascript под браузер 0 18.10.2011 16:09
Помогите Доработать скрипт real-man AJAX и COMET 4 25.06.2011 15:49
Помогите скрипт доработать Georgiy Общие вопросы Javascript 4 15.11.2009 22:06
Помогите доработать хороший скрипт! KiLLka Я не знаю javascript 3 10.06.2009 23:37
Люди, помогите адаптировать скрипт под Оперу KiLLk Opera, Safari и др. 1 01.06.2009 01:05