[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Спрятать dropdown menu в многоуровневом меню!
philcrosoft
Привет программистам! прошу Вашей помощи!
В общем использую этот скрипт для выбора категорий и подкатегорий!
Имеет 4 уровня! отображает все поля, хотелось бы их спрятать до тех пор пока в нет необходимости! скажем в начале отображается только перовое combox, после выбора в нём категории, появилось второе! и так далее!
Всем спасибо!


<script language="JavaScript" type="text/javascript">

// first combo box

data_1 = new Option("1", "$");
data_2 = new Option("2", "$$");

// second combo box

data_1_1 = new Option("11", "-");
data_1_2 = new Option("12", "-");
data_2_1 = new Option("21", "--");
data_2_2 = new Option("22", "--");
data_2_3 = new Option("23", "--");
data_2_4 = new Option("24", "--");
data_2_5 = new Option("25", "--");

// third combo box

data_1_1_1 = new Option("111", "*");
data_1_1_2 = new Option("112", "*");
data_1_1_3 = new Option("113", "*");
data_1_2_1 = new Option("121", "*");
data_1_2_2 = new Option("122", "*");
data_1_2_3 = new Option("123", "*");
data_1_2_4 = new Option("124", "*");
data_2_1_1 = new Option("211", "**");
data_2_1_2 = new Option("212", "**");
data_2_2_1 = new Option("221", "**");
data_2_2_2 = new Option("222", "**");
data_2_3_1 = new Option("231", "***");
data_2_3_2 = new Option("232", "***");

// fourth combo box

data_2_2_1_1 = new Option("2211","%")
data_2_2_1_2 = new Option("2212","%%")

// other parameters

displaywhenempty=""
valuewhenempty=-1

displaywhennotempty="-select-"
valuewhennotempty=0


function change(currentbox) {
numb = currentbox.id.split("_");
currentbox = numb[1];

i=parseInt(currentbox)+1

// I empty all combo boxes following the current one

while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&
(
document.getElementById("combo_"+i)!=null)) {
son = document.getElementById("combo_"+i);
// I empty all options except the first one (it isn't allowed)
for (m=son.options.length-1;m>0;m--) son.options[m]=null;
// I reset the first option
son.options[0]=new Option(displaywhenempty,valuewhenempty)
i=i+1
}


// now I create the string with the "base" name ("stringa"), ie. "data_1_0"
// to which I'll add _0,_1,_2,_3 etc to obtain the name of the combo box to fill


stringa='data'
i=0
while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&
(
document.getElementById("combo_"+i)!=null)) {
eval("stringa=stringa+'_'+document.getElementById(\"combo_"+i+"\").selectedIndex")
if (i==currentbox) break;
i=i+1
}


// filling the "son" combo (if exists)

following=parseInt(currentbox)+1

if ((eval("typeof(document.getElementById(\"combo_"+following+"\"))!='undefined'")) &&
(
document.getElementById("combo_"+following)!=null)) {
son = document.getElementById("combo_"+following);
stringa=stringa+"_"
i=0
while ((eval("typeof("+stringa+i+")!='undefined'")) || (i==0)) {

// if there are no options, I empty the first option of the "son" combo
// otherwise I put "-select-" in it


if ((i==0) && eval("typeof("+stringa+"0)=='undefined'"))
if (eval("typeof("+stringa+"1)=='undefined'"))
eval("son.options[0]=new Option(displaywhenempty,valuewhenempty)")
else
eval("son.options[0]=new Option(displaywhennotempty,valuewhennotempty)")
else
eval("son.options["+i+"]=new Option("+stringa+i+".text,"+stringa+i+".value)")
i=i+1
}
//son.focus()
i=1
combostatus=''
cstatus=stringa.split("_")
while (cstatus[i]!=null) {
combostatus=combostatus+cstatus[i]
i=i+1
}
return combostatus;
}
}


//-->
</script>

<form>
<select
name="combo0" id="combo_0" onChange="change(this);" style="width:200px;">
<option
value="value1">-select-</option>
<option
value="value2">1</option>
<option
value="value3">2</option>

</select>
<BR><BR>
<select
name="combo1" id="combo_1" onChange="change(this)" style="width:200px;">
<option
value="value1"> </option>
</select>
<BR><BR>
<select
name="combo2" id="combo_2" onChange="change(this);" style="width:200px;">
<option
value="value1"> </option>
</select>
<BR><BR>
<select
name="combo3" id="combo_3" onChange="change(this);" style="width:200px;">
<option
value="value1"> </option>

</select>

</form>





Спустя 6 минут, 29 секунд (7.05.2011 - 19:07) Winston написал(а):
Поставь всем остальным свойство css, display:none.
При выборе значения из первого, отображай второй, например
Первый
<option onclick="document.getElementById('second_combo_box').style.display = 'block'">...</option>

Второй
<option onclick="document.getElementById('third_combo_box').style.display = 'block'">...</option>

И т.д.

Спустя 1 час, 27 минут, 6 секунд (7.05.2011 - 20:34) philcrosoft написал(а):
Цитата (PHPprogramer @ 7.05.2011 - 16:07)
Поставь всем остальным свойство css, display:none.

В смысле сделать css отдельно?

Спустя 23 минуты, 10 секунд (7.05.2011 - 20:57) Winston написал(а):
Можешь в тег select добавить атрибут style
Например так:
<slect id="first" onChage="some_function(); document.getElementById('second').style.display = 'block'">
....
</select>

<slect
id="second" style="display:none" onChage="some_function(); document.getElementById('third').style.display = 'block'">
....
</select>

<slect
id="third" style="display:none" onChage="some_function();">
....
</select>

Спустя 45 минут, 7 секунд (7.05.2011 - 21:42) philcrosoft написал(а):
спасибо сделал!

Спустя 2 дня, 24 минуты, 40 секунд (9.05.2011 - 22:07) philcrosoft написал(а):
работать то оно работает, однако с этих полей данные у меня уходят в базу MySQL и при отправке они видит что поля пустые и просит их заполнить! как быть?

Спустя 9 дней, 20 часов, 28 минут, 29 секунд (19.05.2011 - 18:35) philcrosoft написал(а):
поднимаю - решение не нашёл

Спустя 49 минут, 48 секунд (19.05.2011 - 19:25) Winston написал(а):
Тебе нужно узнать какое значение выбрано ?
Если да то так попробуй:

Если с использование PHP то так:

<?php
if(isset($_POST['go']))
echo $POST['first'];
?>
<form action="" method="POST">
<
slect id="first" name="first" onChage="some_function(); document.getElementById('second').style.display = 'block'">
<
option value="1">1</option>
<
option value="2">2</option>
<
option value="3">3</option>
</
select>
<
input type="submit" name="go">
</
form>


Если динамически, AJAX или JS
То так:
<slect id="first" name="first" onChage="some_function(); document.getElementById('second').style.display = 'block'; alert(this.options[this.selectedIndex].value)">
<option
value="1">1</option>
<option
value="2">2</option>
<option
value="3">3</option>
</select>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.