Autor Zpráva
Petr Kolečko
Profil *
Ahoj,

navedte me nekdo, pliis ... hledam a nemuzu najit :-)
Dva selecty Vyrobce a Znacka .. po vybrani Vyrobce zobrazit v druhem selectu jen znacky daneho vyrobce :-) bez reloadu

diky moc
P.
vinnetou
Profil *
co treba nejak takhle?:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script language="JavaScript" type="text/javascript">
vyrobce_1=["znacka1_1","znacka1_2","znacka1_3"];
vyrobce_2=["znacka2_1","znacka2_2","znacka2_3"];
vyrobce_3=["znacka3_1","znacka3_2","znacka3_3"];
function zmen(){
vybrany_vyrobce=document.form1.vyrobce.value;
document.form1.znacka.options.length=0;
if (vybrany_vyrobce!=0){
delka=eval(document.form1.vyrobce.value+".length");
for (i=0;i<delka;i++){
znacka=eval(document.form1.vyrobce.value+"["+i+"]");
volba=new Option(znacka, znacka,false, false);
document.form1.znacka.options[i]=volba;
}
}else{
volba=new Option("nejdriv vyrobce", "0" ,false, false);
document.form1.znacka.options[0]=volba;
}
}
</script>

</head>

<body>
<form action="" method="post" name="form1">
vyrobce
<select name="vyrobce" onchange="zmen()">
<option value="0">neco vyber</option>
<option value="vyrobce_1">vyrobce 1</option>
<option value="vyrobce_2">vyrobce 2</option>
<option value="vyrobce_3">vyrobce 3</option>
</select><br />
znacka
<select name="znacka">
<option value="0">nejdriv znacka</option>
</select>
</form>
</body>
</html>

xhornx
Profil
perfektní příklad, díky moc, ale jen dotaz - u selectu "znacka" ma potom value optionu stejnou hodnotu jako vyraz toho optionu.... takhle:

<select name="znacka">
<option value="znacka1_1">znacka1_1</option>
<option value="znacka1_2">znacka1_2</option>
<option value="znacka1_3">znacka1_3</option>
</select>


mám pravdu? to je ale dost blbý, protože když chci do toho menu zobrazovat názvy s diakritikou, ale je asi dost blbé, když ten název s diakritikou bude i hodnota VALUE......

co myslíte? dá se to nějak obejít?

díky
Oswald
Profil
Koukni kdyžtak na tohle: http://www.webkitchen.cz/lab/js/select-depend/ (nefunguje to v IE5)
xhornx
Profil
nepodpora IE5 je IMHO docela špatné, protože je asi ještě dost uživatelů. kteří IE5 používají.

nedal by se nějak ten předchozí script upravit, aby value optionu bylo rozdílné od pojmenování položky?

nebo ještě jinak, myslíte, že psát diakritiku do value bude dělat problémy? ono se to moc nedělá...

díky
habendorf
Profil
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=3&topic=29 130 a pokračování http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=3&topic=29 197
xhornx
Profil
paráda, díky za linky! ... i když jeden nefunguje :-)

a ještě ten dotaz - docela by mě to zajímalo: může, nebo bude pojmenování VALUE s diakritikou dělat problémy?

např. <option value="příklad">příklad</option>


díky!!
habendorf
Profil
i když jeden nefunguje :-)

Aha, ten příklad se přesunul na http://stuff.1-webdesign.cz/select4.html , trošku jsem měnil uspořádání webu.

Diakritika by problémy dělat nemusela, na druhou stranu osobně bych se jí vyhnul. Ty přece nemusíš mít value stejnou jako obsah option.
ZloBR
Profil *
perfektní příklad, díky moc, ale jen dotaz - u selectu "znacka" ma potom value optionu stejnou hodnotu jako vyraz toho optionu.... takhle:

<select name="znacka">
<option value="znacka1_1">znacka1_1</option>
<option value="znacka1_2">znacka1_2</option>
<option value="znacka1_3">znacka1_3</option>
</select>


mám pravdu? to je ale dost blbý, protože když chci do toho menu zobrazovat názvy s diakritikou, ale je asi dost blbé, když ten název s diakritikou bude i hodnota VALUE......



No to by me take zajimalo. Hodnotu value posilat v takovemto formatu je nesmysl.Jde upravit nejak tato varianta, aby druhy select posilal jinou hodnotu nez je vlastni nazev?

A generovani X selectoru a schovavat je CSS je take neprakticke.
Visitor
Profil *
http://chemik.ostravak.eu/projekty/
dole. ted si nejsem uplne jist zda to je posledni, ve vsech prohlizecich, a za vsech okolnosti funkcni verze :)
ZloBR
Profil *
Hezký kod :).
Ja už si to napsal.
Ale i tak diky.
ZloBR
Profil *
dole. ted si nejsem uplne jist zda to je posledni, ve vsech prohlizecich, a za vsech okolnosti funkcni verze :)

Zkousel jsem tvuj priklad . Je dobry, ale zaboha nemohu vratit hodnoty do stavu pred odeslanim , pokud ve formu budou dalsi povinne inputy. Hodnoty se vzdy nastavi na defautni.

Nemate nekdo typ jak ?Dik.
Visitor
Profil *
cele to v ostre verzi obsluhuje PHPcko. toto je jen cista HTML verze.

mam JS fci init(); ktera se spousti pri onload. pri prvnim nacteni vytvori prvni SB a ostatni nastavi na "neni vybrana zadna polozka"

pokud uz je neco odeslano (z jistych duvodu pouzivam GET) tak se mi fce init vypni timto:
function init () {
<?php
if (isset ($_GET['s1']) && $_GET['s1'] != -1) {
echo 'populate_i (1, ' . $_GET['s1'] . ', 0);' . " ";
echo 'populate (2);' . " ";
...
Visitor
Profil *
vidim ze v prikladu nemam fci populate_i() je to jen optimalizovana verze fce populate aby se nedelalo neco co si poresim pozdeji sam...
Visitor
Profil *
do tretice vseho dobreho ;-)

tak ta fce neni jen optimalizaci... posilam ji parametr kltera hodnota je vybrana.


function populate_i (s, value_sel, num) {
var box = eval ('document.frm.s' + s);

var list = store[s][num];
box.options.length = 0;
box.options[0] = new Option ('Vyberte položku...', '-1');
for (i = 1; i < list.length; i++) {
if (value_sel == list[i]['value']) {
box.options[i] = new Option (list[i]['name'], list[i]['value'], true, true);
} else {
box.options[i] = new Option (list[i]['name'], list[i]['value']);
}
}

// jeste provedeme reset nasledujicich
for (i = s + 1; i <= 3; i++) {
var box_res = eval ('document.frm.s' + i);
box_res.options.length = 0;
box_res.options[0] = new Option ('Není dostupná žádná položka.', '-1');
}
}


A jeste male zamysleni...

snazim se jinak upoustet od:

if (value_sel == list[i]['value']) {
box.options[i] = new Option (list[i]['name'], list[i]['value'], true, true);
} else {
box.options[i] = new Option (list[i]['name'], list[i]['value']);
}


jelikoz ne vzdy a ne ve vsech prohlizecich to funguje. v tomto prikladu mi to zrovna fungovalo tak to tam zustalo ale tato konstrukce se da pekne a vsudefunkcne nahradit timto:

box.options[i] = new Option (list[i]['name'], list[i]['value']);
if (value_sel == list[i]['value']) {
box.options[i].selected = true;
}
Toto téma je uzamčeno. Odpověď nelze zaslat.