Chciałbyś uzależnić adres w action formularza od wyboru konkretnej opcji pola radio lub select w samym formularzu? Poniżej opisałem prosty przykład realizacji tego zadania za pomocą języka JavaScript.
Poniższy przykład przedstawia sposób zmiany action formularza za pomocą opcji w polach typu radio. Kod jest gotowy do użycia na stronie.
<script type="text/javascript">
<!--
function zmienAction(f){
for(var i=0;i<f.opcja.length;i++) {
if(f.opcja[i].checked) {
f.action=f.opcja[i].value;break
}
}
}
//-->
</script>
<form name="zamow" action="zamowienie.php" method="post" onsubmit="zmienAction(this)">
<input type="radio" name="opcja" value="zamowienie.php" checked> 1. Zamów<BR>
<input type="radio" name="opcja" value="rezygnacja.php"> 2. Zrezygnuj<BR>
<input type="radio" name="opcja" value="potwierdzenie.php"> 3. Potwierdź<BR>
<input type="submit" value="go" name="send">
</form>
W momencie wysłania formularza o nazwie zamow, wysolywana jest funkcja zmienAction(), sprawdzająca, która opcja w formularzu została wybrana i ustawia jej wartość jako action formularza zamow. Prawda, że proste? Teraz modyfikacja tego przykładu dla opcji w polu typu SELECT
<script type="text/javascript">
<!--
function zmienAction(f){
f.action=f.opcja.value;
}
//-->
</script>
<form name="zamow" action="zamowienie.php" method="post" onsubmit="zmienAction(this)">
<select name="opcja">
<option value="zamowienie.php">Zamów</option>
<option value="rezygnacja.php">Zrezygnuj</option>
<option value="potwierdzenie.php">Potwierdź</option>
</select>
<input type="submit" value="go" name="send">
</form>
Powyższy przykład działa analogicznie do poprzedniego i nie wymaga dodatkowego komentarza.
#1 by krzysiek on November 22nd, 2007
Nie działa…
#2 by pukas on November 22nd, 2007
A rzeczywiście! Dzięki za czujność – przy przenosinach artykułu uciekło kawałek pętli z pierwszego przykładu. Poprawiłem skrypt i już działa.
#3 by Required name on March 6th, 2009
no taaa, jest wybór action ale na serwer frunie w nagłówku dodatkowo zmienna opcja z adresem: opcja=http%3A%2F%2Frezygnacja.php :\
#4 by pukas on March 10th, 2009
@Required name: to co za problem wyrzucić tego selecta poza formularz, który chcesz wysłać?