 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Fragen stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
03.03.2008, 22:52
|
#1
|
|
TP-Veteran
Registriert seit: Sep 2004
|
Ajax - Fehlerprüfung im Formular
Hallo,
in einem formular verwende ich 2 selectboxe, wobei die zweit abhängig von der ersten box werte ausgibt...das wird mit ajax gemacht (onchange)...
Das formular wird ganz normal abgeschickt. Wenn jedoch fehlerhafte Eingaben gemacht wurden, dann wird es ja erneut angezeigt. nun fehlen mir aber in der 2 selectbox die werte, da das formular ja neu geladen wurde. wie behalte ich also die werte in der 2 selectbox?
|
|
|
04.03.2008, 20:35
|
#2
|
|
TP-Veteran
Registriert seit: Sep 2004
|
das is natürlich auch ne möglichkeit :-) danke für den link.
würde es aber auch gehen, wenn ich es mit der von mir beschriebenen methode mache? dann könnte ich nämlich für die selectboxen noch was einbauen, falls js ausgeschaltet ist und das formular läuft auch ohne JS.
|
|
|
04.03.2008, 22:06
|
#3
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
onSuccess: da kannst Du doch die response auswerten und dementsprechend aktivieren/deaktivieren/neue url laden etc.
|
|
|
04.03.2008, 22:17
|
#4
|
|
TP-Veteran
Registriert seit: Sep 2004
|
ok..ich dachte vorhin eher an die "herkömmliche" weise, das formular abzuschicken, also ohne ajax...ajax nur für das füllen der selectbox zu verwenden.
onSuccess funktioniert ja auch nur mit JS
|
|
|
04.03.2008, 23:19
|
#5
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Da Deine Frage sich auf Ajax bezieht geh ich davon aus das Du das mit Ajax abschickst. Natürlich solltest Du ein no-js-fallback haben.
|
|
|
04.03.2008, 23:33
|
#6
|
|
TP-Veteran
Registriert seit: Sep 2004
|
naja eigentlich wollte ich das formular ohne ajax abschicken und nur die zweite selectbox damit befüllen.
|
|
|
05.03.2008, 00:56
|
#7
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
na dann ist es doch einfach, Du setzt den Status Deiner Buttons durch php.
|
|
|
05.03.2008, 11:47
|
#8
|
|
TP-Veteran
Registriert seit: Sep 2004
|
hmm.. wie meinst du das genau?
ich schicke das formular ab (ohne ajax), und z.B. bei einer nicht korrekten emailangabe steht dann über dem Formular die Fehlermeldung..soweit is alles klar... nur sobald die fehlermeldung dort steht, enthält meine zweite selectbox keine werte mehr, da diese ja erst nach dem onchange der ersten box gefüllt wird.
Ich weiss grad nicht, wie ich die Verbindung zw. dem Status des Buttons und der zweiten Selecbox herstellen soll.
Geändert von alexf812 (05.03.2008 um 11:52 Uhr).
|
|
|
05.03.2008, 12:20
|
#9
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
du kannst die doch mit php befüllen, den Wert der ersten selectbox hast Du ja. oder Du initialisierst Dein Script mit dem Wert der selectbox.
|
|
|
05.03.2008, 13:04
|
#10
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
So, hier mal was zu spielen.
PHP-Code:
<script type="text/javascript"> /*<![CDATA[*/ function loadOpt(elm) { for(n=document.getElementById('opt2').length; n>0; n--) { document.getElementById('opt2').options[n-1] = null; } switch(elm) { case "1": document.getElementById('opt2').options[document.getElementById('opt2').length] = new Option('', '', true, true); document.getElementById('opt2').options[document.getElementById('opt2').length] = new Option('1.1', '1', false, false); document.getElementById('opt2').options[document.getElementById('opt2').length] = new Option('1.2', '2', false, false); break; case "2": document.getElementById('opt2').options[document.getElementById('opt2').length] = new Option('', '', true, true); document.getElementById('opt2').options[document.getElementById('opt2').length] = new Option('2.1', '1', false, false); document.getElementById('opt2').options[document.getElementById('opt2').length] = new Option('2.2', '2', false, false); break; } } function postLoad(elm) { if(elm != '') { loadOpt(elm); } } /*<]]>*/ </script>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" id="form1"> <select id="opt1" name="opt1" onchange="loadOpt(this.value)"> <option value=""></option> <option value="1" <?php echo $_POST['opt1'] == 1 ? "selected=selected": "";?>>Option1</option> <option value="2" <?php echo $_POST['opt1'] == 2 ? "selected=selected": "";?>>Option2</option> </select> <select id="opt2" name="opt2"> </select> <input type="submit" id="submit" name="submit" value="abschicken" /> </form> <?php if(isset($_POST['opt1'])) { echo '<script type="text/javascript">/*<![CDATA[*/ postLoad("'.$_POST['opt1'].'") /*<]]>*/</script>'; } if(!empty($_POST['opt2'])) { echo '<script type="text/javascript">/*<![CDATA[*/ document.getElementById("opt2").options['.$_POST['opt2'].'].selected = true; /*<]]>*/</script>'; } ?>
|
|
|
05.03.2008, 18:49
|
#11
|
|
TP-Veteran
Registriert seit: Sep 2004
|
@webcreate: danke, sowas in der richtung hab ich gesucht...
ich müsste dann noch ein window.addEvent('domready') (mootools) in das javascript einfügen, dann dürfte das so klappen
ich denke mal steffen hat es auch so gemeint :-)
|
|
|
05.03.2008, 18:56
|
#12
|
|
TP-Veteran
Registriert seit: Sep 2004
|
Zitat:
Zitat von steffenk
du kannst die doch mit php befüllen, den Wert der ersten selectbox hast Du ja. oder Du initialisierst Dein Script mit dem Wert der selectbox.
|
also brauchte ich dann ein script zum erzeugen der optionen mit php und ein anderes script, was über ajax ausgeführt wird und mir dort die optionen erzeugt oder?
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:14 Uhr.
|
 |