Javascript.RU

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

Скрыть/показать элементы в зависимости от значения select ов (нескольких)
Необходимо разместить на HTML сайте 2 и более фильтров по которым будет фильтроваться содержимое. Но только с помощью js.

Я мудрил и вот что вышло:
Код:
<!DOCTYPE html>

<head>
<script>function Selected(a) {
 var label = a.value;
 if (label==1) {
  document.getElementById("Label1").style.display='block';
  document.getElementById("Label2").style.display='none';
  document.getElementById("Label3").style.display='none';
  } else if (label==2) {
  document.getElementById("Label1").style.display='none';
  document.getElementById("Label2").style.display='block';
  document.getElementById("Label3").style.display='none';
  } else if (label==3) {
  document.getElementById("Label1").style.display='none';
  document.getElementById("Label2").style.display='none';
  document.getElementById("Label3").style.display='block';
  } else {
  document.getElementById("Label1").style.display='none';
  document.getElementById("Label2").style.display='none';
  document.getElementById("Label3").style.display='none';
  }
  }</script>
</head>

<body>
<span style="font-size: 12pt;">Выберите категорию:</span>
<select id="first" class="Validate_Required " name="Dest" aria-required="true" onChange="Selected(this)">
 <option value="0" selected disabled>Не выбрано</option>
 <option value="1">Авто\Мото</option>
 <option value="2">Компьютеры</option>
 <option value="3">Знакомство</option>
</select>
&nbsp;
&nbsp;
&nbsp;
<span style="font-size: 12pt;">Выберите раздел:</span>
<select id="second" class="Validate_Required " name="Dest" aria-required="true" onChange="Selected(this)">
 <option value="0" selected disabled>Не выбрано</option>
 <option value="3">Дружба\Любовь</option>
 <option value="1">BMW X5</option>
 <option value="2">Microsoft</option>
</select>
<br><hr>
<div id='Label1' style='display: none;'>BMW X5</div>
<div id='Label2' style='display: none;'>Jaguar F5</div>
<div id='Label3' style='display: none;'>Lamborgini Italian</div>

</body> 

</html>
Нужно чтобы во втором фильтре отображались разделы, относящиеся к выбранной категориии в фильтре №1.

Последний раз редактировалось Georka, 05.09.2013 в 14:22.
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2013, 15:09
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

<!DOCTYPE html>
<html>
<head>
<style>
select, div {
display: inline-block;
}
</style>
</head>
<body>
<select id="first">
 <option value="0" selected disabled>Не выбрано</option>
 <option value="1">Авто\Мото</option>
 <option value="2">Компьютеры</option>
 <option value="3">Знакомство</option>
</select>
<div id="second"></div>
<script>
var autos = 'BMW X5, Jaguar F5, Lamborgini Italian'.split(', ');
var computers = 'Windows, Mac, Linux'.split(', ');
var connexions = 'Love, Meeting, Sex'.split(', ');
document.getElementById('first').onchange = function(){
    var str = '';
    if (this.value == 1) {
        for (var i = 0; i < autos.length; i++) {
            str += '<option value="i">' + autos[i];    
        }
    } else if (this.value == 2) {
        for (var i = 0; i < computers.length; i++) {
            str += '<option value="i">' + computers[i];    
        }
    } else if (this.value == 3) {
        for (var i = 0; i < connexions.length; i++) {
            str += '<option value="i">' + connexions[i];    
        }
    } else return false;
    document.getElementById('second').innerHTML = '<select>' + str + '</select>';
}
</script>
</body> 
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2013, 15:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
#second {
display:   none;
}
</style>
</head>
<body>
<select id="first">
 <option value="0" selected >Не выбрано</option>
 <option value="1">Авто\Мото</option>
 <option value="2">Компьютеры</option>
 <option value="3">Знакомство</option>
</select>
<select id="second"></select>
<script>
var autos = 'BMW X5, Jaguar F5, Lamborgini Italian'.split(', ');
var computers = 'Windows, Mac, Linux'.split(', ');
var connexions = 'Love, Meeting, Sex'.split(', ');
var two = [autos,computers,connexions]
document.getElementById('first').onchange = function(){
    var select =  document.getElementById('second'),
    j = this.value;
    select.style.display = "none";
    select.options.length = 0;
    if (j) {
         var options = two[--j];
    for (var i = 0; i < options.length; i++) {
           select.options[i] = new Option(options[i], i); ;
        }
    select.style.display = "inline-block";
    }
}
</script>
</body>
</html>

Последний раз редактировалось рони, 05.09.2013 в 15:35.
Ответить с цитированием
  #4 (permalink)  
Старый 05.09.2013, 20:51
Аватар для Georka
Аспирант
Отправить личное сообщение для Georka Посмотреть профиль Найти все сообщения от Georka
 
Регистрация: 05.09.2013
Сообщений: 95

СПАСИБо =) добрые люди А как теперь отобразить и прописать содержимое , чтобы при выборе например: BMW X5 - отображался раздел который относиться к разделу BMW X5.

Последний раз редактировалось Georka, 05.09.2013 в 21:07.
Ответить с цитированием
  #5 (permalink)  
Старый 05.09.2013, 21:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Georka,
нужно написать функцию для второго селектора
Ответить с цитированием
  #6 (permalink)  
Старый 05.09.2013, 21:34
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от Georka
А как теперь отобразить и прописать содержимое , чтобы при выборе например: BMW X5 - отображался раздел который относиться к разделу BMW X5.
Это уже неинтересно. Для второго селекта делаете аналогично onchange-функцию, в которую вставляете показ нужного раздела через display: block или через переход по ссылке.
Ответить с цитированием
  #7 (permalink)  
Старый 05.09.2013, 21:52
Аватар для Georka
Аспирант
Отправить личное сообщение для Georka Посмотреть профиль Найти все сообщения от Georka
 
Регистрация: 05.09.2013
Сообщений: 95

рони,

Ну поогите ) нужно чтобы было так:
выбрал категорию авто, раздел BMW и отображалось содержимое с описанием BMW
Выбрал категорию компьюеры , раздел windows и там содержимое c описанием windows
Плиз хэлп =)
Ответить с цитированием
  #8 (permalink)  
Старый 05.09.2013, 22:36
Интересующийся
Отправить личное сообщение для pumaone Посмотреть профиль Найти все сообщения от pumaone
 
Регистрация: 05.08.2013
Сообщений: 19

используй цикл:

<div id='Label1' onclick="updateVis(this.id)">BMW X5</div>
<div id='Label2' onclick="updateVis(this.id)">Jaguar F5</div>
<div id='Label3' onclick="updateVis(this.id)">Lamborgini</div>

<script>
function updateVis(){
switch(id){
case 'Label1':
for (var i = 1; i<4; i++){
document.getElementById('Label' + i).style.display = 'none';
}
document.getElementById("Label1").style.display='b lock';
break;
case 'Label2':
for (var i = 1; i<4; i++){
document.getElementById('Label' + i).style.display = 'none';
}
document.getElementById("Label2").style.display='b lock';
break;
default: for (var i = 1; i<4; i++){
document.getElementById('Label' + i).style.display = 'none';
}
}
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 06.09.2013, 00:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Зависимые селекты
Сообщение от BETEPAH
Это уже неинтересно.
согласен
Georka,

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
#second {
display:   none;
}
</style>
</head>
<body>
<select id="first">
 <option value="0" selected >Не выбрано</option>
 <option value="1">Авто\Мото</option>
 <option value="2">Компьютеры</option>
 <option value="3">Знакомство</option>
</select>
<select id="second">
<option value="0" selected >Не выбрано</option>
</select>

<div id='autos1' style='display: none;'>BMW X5</div>
<div id='autos2' style='display: none;'>Jaguar F5</div>
<div id='autos3' style='display: none;'>Lamborgini Italian</div>
<div id='computers1' style='display: none;'>Windows</div>
<div id='computers2' style='display: none;'>Mac</div>
<div id='computers3' style='display: none;'>Linux</div>
<div id='connexions1' style='display: none;'>Love</div>
<div id='connexions2' style='display: none;'>Meeting</div>
<div id='connexions3' style='display: none;'>Sex</div>
<script>
(function ()
{
var autos = 'BMW X5, Jaguar F5, Lamborgini Italian'.split(', ');
var computers = 'Windows, Mac, Linux'.split(', ');
var connexions = 'Love, Meeting, Sex'.split(', ');
var two = [autos,computers,connexions];
var group = 'autos,computers,connexions'.split(',');
var j;
var old;
document.getElementById('first').onchange = function(){
    var select =  document.getElementById('second');
    j = this.value;
    select.style.display = "none";
    old && (old.style.display = "none");
    select.options.length = 1;
    if (j) {
         var options = two[--j];
    for (var i = 1; i <= options.length; i++) {
           select.options[i] = new Option(options[i-1], i); ;
        }
    select.style.display = "inline-block";
    }
}

document.getElementById('second').onchange = function(){
  old && (old.style.display = "none");
  old = document.getElementById(group[j]+this.value);
  old && (old.style.display = "block");
}
})()
</script>
</body>
</html>

Последний раз редактировалось рони, 06.09.2013 в 00:22.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение значения input при смене значения select galart jQuery 4 30.01.2015 19:39
Скрыть/показать элементы в зависимости от значения select AnyKeyLeft Элементы интерфейса 12 16.07.2014 16:26
Подставить значение в action="" в зависимости от выбранного пункта select nkl Элементы интерфейса 2 13.05.2013 14:06
Заполнен значениями элемент <select> из бд, в зависимости от значения второго <select basaparov jQuery 1 14.10.2012 22:02
Выполнение функции в зависимости от SELECT coolkostik Элементы интерфейса 3 05.01.2012 13:03