Chciałem zrobić formularz w którym zawartość drugiej listy rozwijanej jest zależna od wartości ustawionej w pierwszej liście.
Ma ktoś jakiś pomysł jak to zrobić ? Bo mi już zabrakło pomysłów.
Z góry dzieki za podpowiedzi (lub odpowiedzi
Kod: Zaznacz cały
nazwaobj.options[0] = new Option("Biały");
nazwaobj.options[0].value = "kolor";<form id="formID" action="szabla.php" method="POST">
<?$select1V=$_POST['select1'];
?>
<select name="select1" onchange="getElementById('formID').submit();">
<option value="">--Wybierz--</option>
<?if($select1V=="o1"){
echo '<option value="o1" selected>o1</option>';
}else{
echo '<option value="o1">o1</option>';
}
if($select1V=="o2"){
echo '<option value="o2" selected>o2</option>';
}else{
echo '<option value="o2">o2</option>';
}
?>
</select>
<select name="select2">
<?if($select1V=="" || select1V==null){
echo '<option value="">--Wybierz--</option>';
}else if($select1V=="o1"){
echo '<option value="o11">Opcja dla 1 nr 1</option>';
echo '<option value="o12">Opcja dla 1 nr 2</option>';
echo '</select>';
}else if($select1V=="o2"){
echo '<option value="o21">Opcja dla 2 nr 1</option>';
echo '<option value="o22">Opcja dla 2 nr 2</option>';
echo '</select>';
}
?>
</select>
</form>
Kod: Zaznacz cały
<form id="formID" action="somewhere.php" method="post">
<select name="select1" onchange="aktualka(this);">
<option value="">--Wybierz--</option>
<option value="o1">o1</option>
<option value="o2">o2</option>
</select>
<select name="select2" id="select2">
<option value="">--Wybierz--</option>
</select>
</form>
<script type="text/javascript">
var opcje_dla_1 = new Array ("Opcja dla 1 nr 1","Opcja dla 1 nr 2");
var opcje_dla_2 = new Array ("Opcja dla 2 nr 1","Opcja dla 2 nr 2");
var v_alue_dla_1= new Array ("o11","o12");
var v_alue_dla_2= new Array ("o21","o22");
function aktualka(obj){
var what = obj.value;
var select2 = document.getElementById('select2');
var dlugosc_dla_1 = opcje_dla_1.length-1;
var dlugosc_dla_2 = opcje_dla_1.length-1;
if(what == "o1"){
select2.options.length = dlugosc_dla_1.length;
for(var i=0;i<=dlugosc_dla_1;i++){
select2.options[i] = new Option(opcje_dla_1[i]);
select2.options[i].value = v_alue_dla_1[i];
}
} else if(what == "o2"){
select2.options.length = dlugosc_dla_2.length;
for(var i=0;i<=dlugosc_dla_2;i++){
select2.options[i] = new Option(opcje_dla_2[i]);
select2.options[i].value = v_alue_dla_2[i];
}
} else {
select2.options.length = 1;
select2.options[0] = new Option("--Wybierz--");
select2.options[0].value = "";
}
}
</script>Czy trzeba od razu sobie utrudniac zycie z klasami, AJAX'em i PHP? Gdybym mial do takich pierdół robic klasy to mialbym 2x wiekszy kod. Tylko po co mam tracic czas nad wymyslaniem ładnej nazwy klasy skoro mozna to zrobic na jednej funkcji? Jesli chcecie zarabiac duza kase na programowaniu to zacznijcie myslec jak programowac, zeby sie duzo nie narobic a jednak duzo zrobic i zarobic. Tego ucza na pierwszym roku studiow. Radze wrocic do szkoly. Takie jest moje zdanie o poprzednich postach.trzeba uzyć AJAXa...
(...)
samej klasy która to robi znacznie wydajniejsza..
(...)
może więcej z tym roboty,
(...)
Popierwsze jest to dośc trudne...
Po drugie klasa która to robi musi:
Zapewniać znikanie selektów, po zmianie wartości w pierwszym. Pojawianie się konkretnego selecta.
Powinna pracować na id lub class.
Cóż... aż przyjdzie dzień kiedy będziesz chciał coś przerobić... lub wykorzystać kod w innym miejscu, lub będziesz potrzebował kilku takich konstrukcji na jednej stronie... Wtedy bedziesz musiał powielać kod, bo:Jesli chcecie zarabiac duza kase na programowaniu to zacznijcie myslec jak programowac, zeby sie duzo nie narobic a jednak duzo zrobic i zarobic. Tego ucza na pierwszym roku studiow. Radze wrocic do szkoly. Takie jest moje zdanie o poprzednich postach.
Czy gdzies w kodzie ktory podalem nastepuje przeladowanie strony? Raczej nie. Poczytaj dokladnie.Co zaś do przedstawionego przez Ciebie przykładu to użytkownik poprostu oleje stronę która po każdym kliknieciu w selecta zaczyna się mozolnie przeładowywać....
Zauwaz, ze szelbisz chcial konkretna odpowiedz jak mozna zrobic dynamiczna liste. Nie prosil o klase, ktora bedzie w jakims systemie portalowym ale o jedna, konkretna rzecz. Czy w innych postach, gdy ktos prosi o pomoc to oczekuje calej klasy, ktora sprawdzi sie na kazdej stronie? Nie zawsze. Dlaczego wiec kwestionujesz mojego posta tylko dlatego, ze nie napisalem calej klasy, ktora pozniej kazdy kopiowalby do wlasnych celow? Chcesz to sobie napisz klase.Cóż... aż przyjdzie dzień kiedy będziesz chciał coś przerobić... lub wykorzystać kod w innym miejscu, lub będziesz potrzebował kilku takich konstrukcji na jednej stronie... Wtedy bedziesz musiał powielać kod, bo:
Na sztywno wszyłeś konfigurację w funkcję
Nie podzieliłeś kodu na mniejsze moduły
Codziennie w programowaniu stosuje klasy. To normalne. Wiem, ze sa swietne i ulatwiaja zycie ale tutaj nie ma sensu pisac calej klasy. A co do zmian, to wcale nie jest tak trudno jakies wprowadzic.Co do nauki. Niechęć do programowania obiektowego, projektowania pod kątem powtórnego wykorzystania kodu i jego uniwersalizacji zazwyczaj jest świetnym przygotowaniem do nauki... na błędach... i to zazwyczaj osoby która tak pisze kod.
sens zawsze jest.Wiem, ze sa swietne i ulatwiaja zycie ale tutaj nie ma sensu pisac calej klasy
osoba wykorzystująca cudzy kod zawsze bedzie miała prob,eny z wprowadzeniem zmian...A co do zmian, to wcale nie jest tak trudno jakies wprowadzic.