Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Динамическое включение/отключение option (https://javascript.ru/forum/jquery/65873-dinamicheskoe-vklyuchenie-otklyuchenie-option.html)

xassius 12.11.2016 14:01

Динамическое включение/отключение option
 
Доброго всем!

Нужна помощь. Есть 18 select'ов. Набросал скрипт, который динамически отключает/включает option в остальных селектах при его выборе в одном. При тестировании option'ы включаются/отключаются как-то рандомно. Листинг кода на примере 3-х селектов:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
<script>
$('.my_select').change(function() {
	var arr_ext = ['row', 'col'];
	var cur_val = $(this).val()*1;
	var cur_id = $(this).attr('id').substr(8)*1;
	var prev = $(this).data('prev')*1;
	var info = "";
	var sel_obj_cnt = $('.my_select').length;
	
	if (cur_val > 0) {
		for (var i=1; i<=sel_obj_cnt; i++) {
			if (('selector'+cur_id) != $('select#selector'+i).attr('id')) {
				$("#selector"+i+" option[value='"+cur_val+"']").attr('disabled', true);
				info +='selector'+i+' disabled value ' + cur_val + '\n';
			};
		};
	};
	if (prev > 0) {
		for (var i=1; i<=sel_obj_cnt; i++) {
			if (('selector'+cur_id) != $('#selector'+i).attr('id')) {
				$("#selector"+i+" option[value='"+prev+"']").removeAttr('disabled');
				info +='selector'+i+' enabled value ' + prev + '\n';
			};
		};
	};
	$(this).data('prev', cur_val);
	//alert(info);
});
</script>
</head>
<body>
<table>
<thead><tr><th>Выбор по строкам</th><th>Выбор по столбцам</th></tr></thead>
<tbody>
<tr><td><select class='my_select' id='selector1'>
<option selected>--Ничего не выбрано--</option>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
</select></td>
<td><select class='my_select' id='selector4'>
<option selected>--Ничего не выбрано--</option>
<option  value=1>1</option>
<option  value=2>2</option>
<option  value=3>3</option>
</select></td></tr>

<tr><td><select class='my_select' id='selector2'>
<option selected>--Ничего не выбрано--</option>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
</select></td>
<td><select class='my_select' id='selector5'>
<option selected>--Ничего не выбрано--</option>
<option  value=1>1</option>
<option  value=2>2</option>
<option  value=3>3</option>
</select></td></tr>

<tr><td><select class='my_select' id='selector3'>
<option selected>--Ничего не выбрано--</option>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
</select></td>
<td><select class='my_select' id='selector6'>
<option selected>--Ничего не выбрано--</option>
<option  value=1>1</option>
<option  value=2>2</option>
<option  value=3>3</option>
</select></td></tr>

</tbody></table>
</body>
</html>

Coriolan161 13.11.2016 00:05

xassius,
Цитата:

При тестировании option'ы включаются/отключаются как-то рандомно
1) `как-то` не бывает. Тут скорее человеческий фактор
2) почему нельзя всё это прологировать?

xassius 14.11.2016 10:22

Цитата:

Сообщение от Coriolan161 (Сообщение 434898)
xassius,
1) `как-то` не бывает. Тут скорее человеческий фактор

можно сказать и так, учитывая тот факт, что глюк был в подключенном плагине select2.

всем спасибо.


Часовой пояс GMT +3, время: 17:05.