Javascript.RU

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

[РЕШЕНО] Зависимость select и checkbox'a
Всем привет и хорошего настроения.

Помогите, пожалуйста, разобраться с одной проблемой:
есть скрипт следующего вида (jQuery пользуюсь 2-й день, так что поправьте, если код нубский):
$(document).ready(function(){
	$('#c_r').change(function(){
		$('#edit-term-node-tid-depth-6  option:selected').each(function(e){$(this).removeAttr('selected');});
		if (!$(this).is(':checked')){
			$('#edit-term-node-tid-depth-6 option:first').attr('selected','selected');
		}
	});
	$('#f_a').change(function(){
		$('#edit-term-node-tid-depth-3  option:selected').each(function(e){$(this).removeAttr('selected');});
		if (!$(this).is(':checked')){
			$('#edit-term-node-tid-depth-3 option:first').attr('selected','selected');
		}
	});
	$('#sec').change(function(){
		$('#edit-term-node-tid-depth-7  option:selected').each(function(e){$(this).removeAttr('selected');});
		if (!$(this).is(':checked')){
			$('#edit-term-node-tid-depth-7 option:first').attr('selected','selected');
		}
	});
	$('#f_m').change(function(){
		$('#edit-term-node-tid-depth-1  option:selected').each(function(e){$(this).removeAttr('selected');});
		if (!$(this).is(':checked')){
			$('#edit-term-node-tid-depth-1 option:first').attr('selected','selected');
		}
	});
	$('#f_s').change(function(){
		$('#edit-term-node-tid-depth-5  option:selected').each(function(e){$(this).removeAttr('selected');});
		if (!$(this).is(':checked')){
			$('#edit-term-node-tid-depth-5 option:first').attr('selected','selected');
		}
	});
	$('#f_n').change(function(){
		$('#edit-term-node-tid-depth-2  option:selected').each(function(e){$(this).removeAttr('selected');});
		if (!$(this).is(':checked')){
			$('#edit-term-node-tid-depth-2 option:first').attr('selected','selected');
		}
	});
	$('#edit-term-node-tid-depth-6').mouseup(function(evt){
		evt = (evt) ? evt : event;
		var sel = $(this).find('option:selected');
		if (sel.length){
			$('#c_r').removeAttr('checked');
		} 
		else if (evt.ctrlKey) {
			$('#c_r').attr('checked','checked');
		}		
	});
	$('#edit-term-node-tid-depth-3').mouseup(function(evt){
		evt = (evt) ? evt : event;
		var sel = $(this).find('option:selected');
		if (sel.length){
			$('#f_a').removeAttr('checked');
		} 
		else if (evt.ctrlKey) {
			$('#f_a').attr('checked','checked');
		}		
	});
	$('#edit-term-node-tid-depth-7').mouseup(function(evt){
		evt = (evt) ? evt : event;
		var sel = $(this).find('option:selected');
		if (sel.length){
			$('#sec').removeAttr('checked');
		} 
		else if (evt.ctrlKey) {
			$('#sec').attr('checked','checked');
		}		
	});
	$('#edit-term-node-tid-depth-1').mouseup(function(evt){
		evt = (evt) ? evt : event;
		var sel = $(this).find('option:selected');
		if (sel.length){
			$('#f_m').removeAttr('checked');
		} 
		else if (evt.ctrlKey) {
			$('#f_m').attr('checked','checked');
		}		
	});
	$('#edit-term-node-tid-depth-5').mouseup(function(evt){
		evt = (evt) ? evt : event;
		var sel = $(this).find('option:selected');
		if (sel.length){
			$('#f_s').removeAttr('checked');
		} 
		else if (evt.ctrlKey) {
			$('#f_s').attr('checked','checked');
		}		
	});
	$('#edit-term-node-tid-depth-2').mouseup(function(evt){
		evt = (evt) ? evt : event;
		var sel = $(this).find('option:selected');
		if (sel.length){
			$('#f_n').removeAttr('checked');
		} 
		else if (evt.ctrlKey) {
			$('#f_n').attr('checked','checked');
		}		
	});
});


Суть проблемы в том, что скрипт отлично отрабатывает в Firefox 3.6.1.1, Google Chrome, Opera, а в IE8 не срабатывает можно сказать. Подскажете что можно предпринять?

Скрипт должен выполнять следующее:

Есть multiple селект, под ним есть чекбокс. Нужно, чтобы:
- при щелчке на селект галочка в чекбоксе снималась.
- Чтобы при нажатой клавише CTRL щелчке (для снятия выделенного элемента селекта) галочка возвращалась в чекбокс.
- При снятии галочки с чекбокса выделялся первый элемент селекта.
- При установке галочки в чекбокс - выделение в селекте снималось полностью.

Ай нид хелп...

Последний раз редактировалось kolosnitsyn, 26.10.2010 в 09:07. Причина: решено
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2010, 09:06
Новичок на форуме
Отправить личное сообщение для kolosnitsyn Посмотреть профиль Найти все сообщения от kolosnitsyn
 
Регистрация: 26.10.2010
Сообщений: 3

Решено путем замены change на click в первой части скрипта и замены mouseup на change во второй части скрипта.
Ответить с цитированием
  #3 (permalink)  
Старый 26.10.2010, 10:02
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

1. $(document).ready(function(){}); можно использовать в более сокращенной нотации $(function(){});
2. evt = (evt) ? evt : event; - избавьтесь
3. #edit-term-node-tid-depth - можно один раз записать в переменную с более коротким именем идентификатор и писать только имя переменной var elem = $'(#edit-term-node-tid-depth');
а использовать в уже такой нотации: $(elem+i+'option:selected')....
i - в данном случае выполняет итерацию

Да и вообще, попытайтесь сократить код в несколько раз - это возможно

Последний раз редактировалось monolithed, 26.10.2010 в 10:09.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связь массива картинок и select alesto jQuery 6 22.04.2010 10:47
динамическое заполнение SELECT PavelDart Элементы интерфейса 1 10.09.2009 09:16
Продлема с получением данных из select Tartyga Общие вопросы Javascript 10 05.08.2009 21:13
заполнить select значениями другого select Central Элементы интерфейса 1 30.05.2009 13:41
событие на выпадение-скрытие списка select Aderba jQuery 1 03.04.2009 20:51