Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2012, 12:11
man man вне форума
Интересующийся
Отправить личное сообщение для man Посмотреть профиль Найти все сообщения от man
 
Регистрация: 22.08.2009
Сообщений: 14

Работа с чекбоксами
Возможно кто-то встречал плагин jquery для работы с чекбоксами?

Например выделить все чекбоксы, снять выделение, инвертировать выделение. Если выделены все чекбоксы в группе, или чекбоксы с заданными параметрами то выделять главный чекбокс(который выделяет все). Также чтобы подсвечивалась строка таблицы (тег <tr>) если в ней выделили чекбокс, ну и чтобы при нажатии на эту строку выделялся чекбокс.


Неохота писать велосипед, если такое уже есть
Ответить с цитированием
  #2 (permalink)  
Старый 14.04.2012, 03:39
Аватар для w46823
Аспирант
Отправить личное сообщение для w46823 Посмотреть профиль Найти все сообщения от w46823
 
Регистрация: 28.03.2012
Сообщений: 36

А для этого обязательно использовать jQuery?
Ответить с цитированием
  #3 (permalink)  
Старый 14.04.2012, 14:59
man man вне форума
Интересующийся
Отправить личное сообщение для man Посмотреть профиль Найти все сообщения от man
 
Регистрация: 22.08.2009
Сообщений: 14

jQuery используется в проекте




вот накидал говнокод, пример работы http://pastehtml.com/view/buq9co1p5.html
(function($) {
	$.fn.checkbox = function(options){
		var defaults = {
			parent: '',
			main: '',
			sub: '',
			c: 0
		};
		
		var opts = $.extend(defaults, options);
		var total = $(opts.parent).find("input[type=\"checkbox\"][name=\""+opts.sub+"\"]").length;
		
		
		$(options.parent + ' tr')
			.filter(':has(:checkbox:checked)')
			.addClass('selected')
			.end()
			.click(function(event) {
				
				$(this).toggleClass('selected');
				if (event.target.type !== 'checkbox') {
					var check = $(':checkbox', this);					
					check.attr('checked', function() {
						return !this.checked;
					});	
					
					if(check.is(':checked')) opts.c++;
						else opts.c--;
						
					if(opts.c == total) $(opts.main).attr('checked', true);
						else $(opts.main).attr('checked', false);					
					
				}	
				
			});
			
		$(options.main).click(function(){
		
			$(opts.parent).find("input[type=\"checkbox\"][name=\""+opts.sub+"\"]").each(function(){				
				
				// инвертирует выделение				
				//$(this).attr('checked',!$(this).attr('checked'));
				//$(this).parents().toggleClass('selected');
				//$(this).parent().toggleClass('selected');				
				
				// выделяет все, или снимает выделение со всех				
				if($(opts.main).attr('checked')) {
					$(this)
						.attr('checked', 'checked')
						.closest('tr')
						.addClass('selected');
					opts.c++;
				} else {
					$(this)
						.attr('checked', false)
						.closest('tr')
						.removeClass('selected');
					opts.c--;
				}
							
			});
			
		});	
		
		$(opts.parent + " input[name='"+opts.sub+"']").bind('click', function(){
				
			if($(this).is(':checked')) opts.c++;
				else opts.c--;					
				
			if(opts.c == total) $(opts.main).attr('checked', true);
				else $(opts.main).attr('checked', false);		
		
		});		
		
	};
})(jQuery); 


$(document).ready(function() {

	$('.table').checkbox({
		parent: '.table',
		main: '#checkall',
		sub: 'check[]'
	});
	
});

Последний раз редактировалось man, 14.04.2012 в 15:30.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаленная работа LexLunnyi Работа 3 14.02.2012 12:20
Программист JavaScript постоянная удалённая работа. moisha Работа 4 26.10.2011 19:52
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06
Работа с cookie klubnichkaaa AJAX и COMET 1 26.09.2011 14:06
Дерево с чекбоксами ilshat Элементы интерфейса 15 23.07.2009 18:58