Form submit per onclick ausführen / values aus hidden fields
Tolwin
- javascript
Hallo Forum,
ich versuche Javascript in Kombination mit PERL dazu zu bringen
Values aus hidden fields an ein sich selbst aufrufendes CGI Script zu übergeben. In einem Form tag werden dynamisch Links aufgebaut, mit denen
ein Filebrowsing realisiert wird. Um jetzt nicht sämtliche Parameter per GET Request an den Link hängen zu müssen (das geht ja maximal bis 255 Zeichen), habe ich einen Teil in hidden fields ausgelagert. Hier der
Quellcode des Forms in gekürzter Fassung
<form action="/iw-bin/custom/filebrowser_tmp.cgi" name="browsing" method="post">
<a class='iw-base-link' onclick='javascript:submitForm()' href='/iw-bin/custom/filebrowser_tmp.cgi?vp=/default'><img src='/img_directory.gif' style='border=0;vertical-align:text-bottom;margin-left:3px'><span style='margin-left:4px'>.</span></a><br>
<a class='iw-base-link' onclick='javascript:submitForm()' href='/iw-bin/custom/filebrowser_tmp.cgi?vp='><img src='img_directory.gif' style='border=0;vertical-align:text-bottom;margin-left:3px'><span style='margin-left:4px'>..</span></a><br>
<input id="vp" name="vp" type="hidden" value="/default/main">
<input id="form_name_h" name="form_name_h" type="hidden" value="blabla">
</form>
Durch anklicken eines Links soll dann dieses kleine Javascript den Submit ausführen
function submitForm() {
document.browsing.submit();
}
Hatte auch schon diese Varianten probiert
function submitForm() {
document.forms['browsing'].submit();
}
und
function submitForm() {
document.forms[0].submit();
}
Leider ohne Erfolg. Im Post befinden sich nach klicken des Links keine Parameter. Woran könnte das liegen? Wird der Submit des Forms gar nicht ausgeführt? Wie kann ich das testen? Hat jemand nen Tipp für mich ?
Vielen Dank schon im Voraus
Tolwin
Mahlzeit Tolwin,
<form action="/iw-bin/custom/filebrowser_tmp.cgi" name="browsing" method="post">
<a class='iw-base-link' onclick='javascript:submitForm()' href='/iw-bin/custom/filebrowser_tmp.cgi?vp=/default'><img src='/img_directory.gif' style='border=0;vertical-align:text-bottom;margin-left:3px'><span style='margin-left:4px'>.</span></a><br>
Was soll das Pseudoprotokoll "javascript:"? Dessen Angabe ist überflüssig und falsch.
function submitForm() {
document.browsing.submit();
}
Beim Drücken auf den Link wird zwar mittels des "onclick"-Eventhandler das Formular aufgerufen - allerdings wird ebenso der gewählte (und angeklickte) Link angefordert. Das kannst Du unterbinden, indem der vom "onclick"-Eventhandler ausgeführte Code einfach als http://de.selfhtml.org/javascript/sprache/funktionen.htm#rueckgabewert@title=Rückgabewert "falsch" zurückgibt.
Leider ohne Erfolg. Im Post befinden sich nach klicken des Links keine Parameter. Woran könnte das liegen?
Weil Du nicht das Ergebnis des Formular-abschickens, sondern den angeforderten Link vor Dir hast ...
Wird der Submit des Forms gar nicht ausgeführt?
Doch. :-)
Wie kann ich das testen?
Im Prinzip nur durch serverseitige Log-Mechanismen.
MfG,
EKKi
Hi EKKi,
danke für die prompte Antwort! Habe javascript: gleich mal entfernt.
Zu deinem Tipp mit dem Return Wert - habe die Funktion damit erweitert:
function submitForm() {
document.browsing.submit();
return false;
}
So hattest DU es doch gemeint, richtig!?
Bringt aber leider noch immer nicht das gewünschte Ergebnis.
Noch ne Idee woran es liegt?
Grüße
Tolwin
Mahlzeit Tolwin,
Zu deinem Tipp mit dem Return Wert - habe die Funktion damit erweitert:
function submitForm() {
document.browsing.submit();
return false;
}So hattest DU es doch gemeint, richtig!?
Nein. So liefert die Funktion einen Rückgabewert (und zwar "falsch") an das aufrufende Stück Code. Das ist in diesem Fall der Eventhandler "onclick".
<a class='iw-base-link' onclick='submitForm()' ... >
Der fängt jedoch absolut nichts damit an. Insbesondere gibt er selbst keinen Rückgabewert zurück - also wird die im Link genannte Ressource angefordert.
Du musst dafür sorgen, dass der Eventhandler selbst den richtigen Rückgabewert zurückliefert (in diesem Fall also "falsch").
MfG,
EKKi
Nein. So liefert die Funktion einen Rückgabewert (und zwar "falsch") an das aufrufende Stück Code. Das ist in diesem Fall der Eventhandler "onclick".
meinst Du es so ?
onclick='submitForm();return false'
Grüße
Tolwin
Mahlzeit Tolwin,
meinst Du es so ?
onclick='submitForm();return false'
Oder halt "onclick='return submitForm();'" (wenn die Funktion selbst schon "false" zurückliefert.
MfG,
EKKi
Oder halt "onclick='return submitForm();'" (wenn die Funktion selbst schon "false" zurückliefert.
Danke, habs jetzt so umgesetzt. Leider bekomme ich noch immer nicht
die Parameter aus den hidden fields übergeben. Da kommt nix an, wie ich
auch dem error.log entnehmen kann (lasse mir alles dumpen)
Keine Ahnung, was ich da falsch mache.
Gruß
Tolwin
Hi,
Leider bekomme ich noch immer nicht die Parameter aus den hidden fields übergeben. Da kommt nix an, wie ich auch dem error.log entnehmen kann (lasse mir alles dumpen)
Wird denn jetzt wirklich ein POST-Request ausgefuehrt, klappt also das Abschicken des Formulars nun?
Gibt es einen Unterschied, wenn du das Formular ueber einen "normalen" Submitbutton abschickst?
Ist das HTML valide? Befinden sich die Formularelemente auch wirklich *im* Formular?
MfG ChrisB