Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.11.2013, 10:19
Аспирант
Отправить личное сообщение для vladislav.blinov Посмотреть профиль Найти все сообщения от vladislav.blinov
 
Регистрация: 13.07.2013
Сообщений: 30

optgroup в мультиселекте
Всем привет! подскажите пожалуйста пример скрипта, есть мультиселект -
<select id="e_skills" class="skill_changer" multiple="multiple">
<optgroup id="44" label="Группа1">
<option value="137,44">mission impossible</option>
<option value="138,44">ahtung</option>
<option value="139,44">protocol 12</option>
</optgroup>
<optgroup id="67" label="Группа2">
<option value="121,67">post</option>
<option value="128,67">query</option>
<option value="130,67">good</option>
<option value="131,67">sss</option>
</optgroup>
</select>

нужно что бы щёлкнув по названию группы выбирались все пункты этой группы.
Ответить с цитированием
  #2 (permalink)  
Старый 13.11.2013, 11:07
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от vladislav.blinov
что бы щёлкнув по названию группы выбирались все пункты этой группы
На именно название optgroup нет такого события...

Делай свой селект.
Ответить с цитированием
  #3 (permalink)  
Старый 13.11.2013, 11:23
Аспирант
Отправить личное сообщение для vladislav.blinov Посмотреть профиль Найти все сообщения от vladislav.blinov
 
Регистрация: 13.07.2013
Сообщений: 30

Цитата:
Делай свой селект.
я бы с удовольствием, но нужен именно bootstrap multiselect. И что события на optgroup нету знаю, но нужно создать, вот я и дербаню его уже второй день.
Ответить с цитированием
  #4 (permalink)  
Старый 13.11.2013, 13:33
Аспирант
Отправить личное сообщение для vladislav.blinov Посмотреть профиль Найти все сообщения от vladislav.blinov
 
Регистрация: 13.07.2013
Сообщений: 30

я тут немного разобрался, поразмыслил и получилось следующее -
groupAll: function() {
            this.$element.find('option').prop('selected', true).attr('selected', 'selected');
            this.render();
        },

find находит все - ('option') и отчекивает следовательно тоже все. А вот как задать поиск ('option') в определённом optgroup не могу понять...
Ответить с цитированием
  #5 (permalink)  
Старый 13.11.2013, 13:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от vladislav.blinov
А вот как задать поиск ('option') в определённом optgroup не могу понять...
"Усилить" селектор!

$('#44 > option');
$('optgroup[label="Группа2"] > option');
Ответить с цитированием
  #6 (permalink)  
Старый 14.11.2013, 11:50
Аспирант
Отправить личное сообщение для vladislav.blinov Посмотреть профиль Найти все сообщения от vladislav.blinov
 
Регистрация: 13.07.2013
Сообщений: 30

Спасибо за совет , в итоге получилось:
$('#44').find('option').prop('selected', true).attr('selected', 'selected');

а как можно определить что все option в группе отчекнуты, чтобы при повторном нажатии выделение снималось?
Ответить с цитированием
  #7 (permalink)  
Старый 14.11.2013, 13:07
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от vladislav.blinov
а как можно определить что все option в группе отчекнуты
Как вариант...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(function (){
	$('optgroup').click(function (){
		if ($(this).children('option:not("[selected]")').length) {
			$(this).children('option').attr('selected',true);
		} else {
			$(this).children('option').attrRemove('selected');
		};
	});
});
</script>
</head>
<body>
<select id="e_skills" class="skill_changer" multiple="multiple">
	<optgroup id="44" label="Группа1">
		<option value="137,44">mission impossible</option>
		<option value="138,44">ahtung</option>
		<option value="139,44">protocol 12</option>
	</optgroup>
	<optgroup id="67" label="Группа2">
		<option value="121,67">post</option>
		<option value="128,67">query</option>
		<option value="130,67">good</option>
		<option value="131,67">sss</option>
	</optgroup>
</select>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 15.11.2013, 08:36
Аспирант
Отправить личное сообщение для vladislav.blinov Посмотреть профиль Найти все сообщения от vladislav.blinov
 
Регистрация: 13.07.2013
Сообщений: 30

Заработало! плохо только что сам до всего не додумался но думаю придёт всё с опытом. ksa спасибо за советы
кому интересно вот окончательный вариант моего скриптика
var selectActive = $("#id").find('option:not("[selected]")').length;
    if(selectActive == 0){
        $("#id").find('option').prop('selected', false).removeAttr('selected');
        $("#e_skills").selectpicker('render');
    }else{
        $("#id").find('option').prop('selected', true).attr('selected', 'selected');
        $("#e_skills").selectpicker('render');
    }
Ответить с цитированием
Ответ



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

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