Dynamisches Formular (PHP/JS)

jhartlep

Grünschnabel
Moin,

ich habe folgendes Problem:
Ich möchte in einem Formular die Action dynamisch anhand der vom User getroffenen Auswahl bestimmen. Hier dazu ein Auszug aus dem Quellcode, wie er z.Z. ausschaut:

PHP:
$daten = $_REQUEST["daten"])
$datenACTION = "/test/start/".$daten; ?>
<form name="selectDaten" action="<?=$datenACTION?>">
	Daten-Select:<br/>
	<select onchange="submit();" name="daten">
		<option value="-1">Bitte Daten auswählen</option>
		<? foreach ($data["Input"] as $aktInput) { ?>
			<option value="<?=$aktInput->DATA))?>"  <? if ($aktInput->DATA == $data["selectedDaten"]) echo " selected "?> >
				<?=$aktInput->DATA?>
			</option>
		<? } ?>
	</select>
</form>

In dem Moment, wo der User eine Auswahl trifft, wird das Formular abgeschickt. Nun möchte ich in diesem Moment an die action=""-Anweisung des Formulars dynamisch die Auswahl des Users dranhängen.
Ist sowas möglich, und wenn ja, wie?
 
klar - über onSubmit() kannste das action attribut noch ändern und dann wegschicken, aber wozu soll das gut sein.

Nimm einfach 'get' als Methode, dann kommt das eh in die URL!

Dirk
 
Atm übergebe ich die Daten mittels Get.

Ich möchte aber für jede Auswahlmöglichkeit eine neue Zielseite generieren.
Also in der folgenden Form
/test/start/Daten1
/test/start/Daten2
/test/start/Daten3
usw.

Im Moment liefert mir das Formular mit action="/test/start/" folgendes:
/test/start/?daten=Daten1
/test/start/?daten=Daten2
uws.

Bzgl. onSubmit():
Muß ich also ne JS-Funktion schreiben, welche mir dynamisch dann ne Variable für action="" generiert?
Also quasi in der Form hier:
<form onSubmit="createAction()" action="">
function createAction() {
...
}
 
Ja genau.

Dazu dem form noch einen namen geben und dann
<form name="foo" onSubmit="createAction()" action="">
Javascript:
function createAction() {
document.foo.action = "...";
document.foo.submit();
}

so in etwa.- Nun musst nur noch die selected den Eintrag auslesen und das action entpsprechend angeben.

Dirk
 
Ich würde vorschlagen, dass du die Änderungs-Funktion auf das onchange-Event des Select-Elements legst:

HTML:
<form id="meinformular" action="/test/start" method="get">
    <select onchange="aendereFormAction('meinformular',this.options[this.selectedIndex].value);">
        <option value="Daten1">Daten1</option>
        <option value="Daten2">Daten2</option>
         ....
    </select>
</form>
Die JS-Funktion sieht dann so aus:

Code:
function aendereFormAction(formularid,wert) {

    try {
    
        var formular  = document.getElementById(formularid);
        var tmpaction = formular.getAttribute("action");
        
        formular.setAttribute("action",tmpaction+"/"+wert);
    }
    
    catch (e) {}
}
Diese Vorgehensweise hat den Vorteil, dass der Benutzer auch mehrere Werte (wenn das so vorgesehen und gewünscht ist) auswählen kann und alle an die Formular-Action angehangen werden.

MfG, teccco
 
Zurück