Zum Inhalt springen

Javascript onChange


Twiggy

Empfohlene Beiträge

Hallöchen,

ich habe in einem PHP-Script eine Select-Box. Wenn man etwas daraus auswählt soll passend auf der Seite eine neue Selectbox generiert werden.

Ich habe hier im Forum schon gesucht und auch einige Anhaltspunkte gefunden (Javascript onChange), aber dass, was ich mir anhand dessen zusammengebastelt habe funktioniert nicht.

Es passiert einfach gar nichts, nur in der Statusleiste des IE taucht das Felhersymbol auf.

Da ich von Javascript absolut null Ahnung habe, würde ich mich freuen, wenn ihr mal über den Quelltext drüberschauen könntet und mir sagen könntet was ich da beachten muss/ falsch mache.

<?php

if (! isset ( $dez ))

{

echo "<div align='center'>" ;

echo "<br><br><font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2>" ;

echo "<b>Bitte wählen Sie aus, was angezeigt werden soll</b></font>" ;

echo "<table width='80%'>" ;

echo "<form name='dez' action='auswahldez.php' method='post'>" ;

echo "<tr><td align='center'><br><select name='dez' size='4' onChange=erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value)>" ;

echo "<option value='I'>Dezernat I</option>" ;

echo "<option value='II'>Dezernat II</option>" ;

echo "<option value='III'>Dezernat III</option>" ;

echo "<option value='IV/V'>Dezernat IV/ V</option>" ;

echo "</select></td>" ;

echo "</tr>" ;

echo "<tr><td align='center'><br><input type='submit' name='auswahl' value='--> Weiter'>" ;

echo "</td></tr>" ;

echo "<script type=\"language\"> \n" ;

echo "<!-- \n" ;

echo "function erneuern(dez) { \n" ;

echo "window.location.href=\"auswahldez.php?dez=\" + dez + \";" ;

echo "} \n" ;

echo "// -->\n" ;

echo "</script>\n" ;

echo "</form>" ;

echo "</table>" ;

echo "</div>" ;

}

else

{

/* Der Einfachheit halber will ich hier statt das neue Feld zu generieren erstmal nur die Variable ausgeben, anhand derer dann das Feld generiert wird */

echo "<font color='#000000'><h2>* $dez *</h2></font>" ;

}

?>

Für jedwedige Hilfe schonmal im Voraus Danke

Twiggy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, dann halt nochmal in der gewünschten Form.

Ich hatte noch einen kleinen Fehler entdeckt, bei der Einleitung des Javascript-Teils, aber dessen Behebung hat auch nichts gebracht. :-(

Ich hab die entsprechenden Javascript-Teile, um die es mir hier geht mal rot gekennzeichnet, damit man sie schneller findet.

@Wolle: Danke fürs verschieben, war mir auch schon aufgefallen, dass ich irgendwie falsch gelandet bin. :-)


<?php
if (!isset($dez))
{
?>
<div align='center'><br><br>
<font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2>
<b>Bitte wählen Sie aus, was angezeigt werden soll</b></font>
<table width='80%'>
<form name='dez' action='auswahldez.php' method='post'>
<tr>
<td align='center'>
<br><select name='dez' size='4' [COLOR=red]onChange=erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value)[/COLOR] >
<option value='I'>Dezernat I</option>
<option value='II'>Dezernat II</option>
<option value='III'>Dezernat III</option>
<option value='IV/V'>Dezernat IV/ V</option>
</select>
</td>
</tr>
<tr>
<td align='center'><br><input type='submit' name='auswahl' value='--> Weiter'>
</td>
</tr>

[COLOR=red]<script language='JavaScript'>
<!--
function erneuern(dez)
{
window.location.href="auswahldez.php?dez=" + dez + ";
}
// -->
</script>[/COLOR]

</form>
</table>
</div>
<?php
}
else
{
?>
/* Der Einfachheit halber will ich hier statt das neue Feld zu generieren erstmal nur die Variable ausgeben, anhand derer dann das Feld generiert wird */
<font color='#000000'><h2>* $dez *</h2></font>
<?php
}
?>
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, klasse, dann funktionierts.

Vielen Dank!

Dann hab ich noch ne Frage. Wenn ich noch andere Variablen in dem Formular habe, bleiben die beim Neuladen ja nicht bestehen, oder?

Kann ich die dann einfach hier hinter hängen, so wie das was da in türkis steht?

window.location.href="auswahldez.php?dez=" + dez + "&neue_variable=" + neue_variable;

Danke nochmal

Twiggy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm, irgendwie ist da noch ein Problem mit der Übergabe mehrerer Variablen an die Funktion, dachte eigentlich, dass das so gehen müsste.

function erneuern(dez, abt)

aber wenn ich das so mache wird die Variable dez mit dem Wert von abt gefüllt und abt mit "undefined".

Habe mir jetzt gedacht, dass es daran liegen könnte, dass die Variable dez beim zweiten onChange nicht mehr gesetzt wird und habe ein hidden-Feld eingebaut, in dem sie dann innerhalb des Formulars nochmal gesetzt wird. Bekomme aber trotzdem immernoch ne falsche Ausgabe.

Ich versteh das nicht. :(

Link zu diesem Kommentar
Auf anderen Seiten teilen


<?php
if (!isset($dez))
{
$abt = "irgendwas";
?>
<div align='center'><br><br>
<font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2>
<b>Bitte wählen Sie aus, was angezeigt werden soll</b></font>
<table width='80%'>
<form name="dez" action='auswahldez.php' method='post'>
<tr>
<td align='center'>
<br><select name='dez' size='4' onChange="erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value, '<?php echo $abt; ?>');">
<option value='I'>Dezernat I</option>
<option value='II'>Dezernat II</option>
<option value='III'>Dezernat III</option>
<option value='IV/V'>Dezernat IV/ V</option>
</select>
</td>

</tr>
<tr>
<td colspan=2 align='center'><br><input type='submit' name='auswahl' value='--> Weiter'>
</td>
</tr>

<script language='JavaScript'>
<!--
function erneuern(dez, abt)
{
window.location.href="auswahldez.php?dez=" + dez + "&abt=" + abt;
}
// -->
</script>

</form>
</table>
</div>
<?php
}
else
{
?>
/* Der Einfachheit halber will ich hier statt das neue Feld zu generieren erstmal nur die Variable ausgeben, anhand derer dann das Feld generiert wird */
<font color='#000000'><h2>* $dez *</h2></font>
<?php
echo $dez ."-". $abt;

}
?>
[/php]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tja, wenn ich mir das so ansehe, dann muss ich das wohl doch anders machen.

So sah das bei mir aus, und so funktionierts halt nicht:


<script language='JavaScript'>
<!--
function erneuern(dez, abt)
{
window.location.href="auswahldez.php?dez=" + dez + "&abt=" + abt;
}
// -->
</script>
<?php
if (!isset($abt) and !isset($dez))
{
?>
<div align='center'><br><br>
<font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2>
<b>Bitte wählen Sie aus, was angezeigt werden soll</b></font>
<table width='80%'>
<form name='dez' action='auswahldez.php' method='post'>
<tr>
<td align='center'>
<br><select name='dez' size='4' onChange=erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value) >
<option value='I'>Dezernat I</option>
<option value='II'>Dezernat II</option>
<option value='III'>Dezernat III</option>
<option value='IV/V'>Dezernat IV/ V</option>
</select>
</td>
</tr>
<tr>
<td align='center'><br><input type='submit' name='auswahl' value='--> Weiter'>
</td>
</tr>
</form>
</table>
</div>
<?php
}
elseif ($abt == "undefined" and isset($dez))
{
?>
<div align='center'>
<br><br><h2><font color='#5A78B4'>Gesamtanzeige Hardware</h2>
<b>Sie haben Dezernat $dez ausgewählt!<br>
Wie wollen Sie weiter verfahren?</b><br><br></font>
<table width='80%'>
<tr>
<td align='center'>Daten des Dezernat $dez<br></td>
</tr>
<tr>
<td align='center'>
<form action='anzeigedez.php' method='post'>
<input type='hidden' name='dez' value='$dez'>
<input type='submit' name='anzeigen' value='anzeigen'>
</form>
</td>
</tr>
</table>
<?php
if ($dez == "I")
{
?>
<table width='80%'>
<tr>
<td align='center'>Abteilung auswählen<br></td>
</tr>
<tr>
<td align='center'>
<form action='auswahldez.php' method='post'>
<select name='abt' size='5' onChange=erneuern(this.form.abt.options[this.form.abt.options.selectedIndex].value)>
<option value='hgf'>HGF, Präsident, Sekretariat</option>
<option value='I/1-1'>Abteilung I/1-1 (PR, Medien)</option>
<option value='I/1-2'>Abteilung I/1-2 (Controlling)</option>
</select><br><br>
<input type='submit' name='auswahl' value='--> Weiter'>
</form>
</td>
</tr>
</table>";
<?php
}
}
else
{
echo "*$dez**$abt*";
//zur Überprüfung
}
?>
[/PHP]

Ich hoffe mein Problem ist verständlich, danke für deine Geduld Art, wäre nett, wenn Du mir das ganze etwas erklären könntest. Also warum das so nicht geht, denn ich würde das schon ganz gerne verstehen, muss das wahrscheinlich noch öfter in meinen PHP-Scripten verwenden und da ist es doch besser wenn man nicht nur copy & paste macht, sondern weiß womit mans zu tun hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi. nuja. bin kein großer künstler im erklären. aber in der section abteilung mußt du dez wieder an erneuern() übergeben.


onChange="erneuern('<?php echo $dez;?>', this.form.abt.options[this.form.abt.options.selectedIndex].value)"
[/php]

allerdings befürchte ich, dass du dich ziemlich verzetteln wirst, wenn du die abteilungen alle mit if anweisungen abfangen willst. wo kommen denn die daten her?

datenbank? datei? wie wärs denn wenn du dezernate und abteilung erstman in ein array packst? aber nix genaues weiss man.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...