PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Select/Option mit Textausgabe


Marilu
17.07.2003, 21:17:15
Hi *.*,

ich möchte bei einem Select/Option-Auswahlfeld hinter dem Feld einen Text ausgeben, der sich ändert, wenn eine andere Auswahl angewählt wird.

Ich kann hier nicht durch onchange einen Submit auslösen, da sonst bei jeder Änderung etliche SQL-Abfragen durchgeführt werden würden.

Kann mir jemand einen Tip geben?

c4
17.07.2003, 22:00:34
So z.B.:<html>
<head>
<title>Testseite</title>
<script type='text/javascript' language='javascript'>
<!--
function zeigmirwasandufunktiondu() {
var temp=document.f.s.value;
switch (temp) {
case '0' : p.innerHTML='<b>Yeah, die Null!!</b>'; break;
case '1' : p.innerHTML='..,- fertig ist das Mondgesicht'; break;
case '2' : p.innerHTML='Test zum testen eines testes'; break;
}
}
//-->
</script>
</head>
<body bgcolor='white'>

<form name='f' action='asd.lsd' method='post'>
<select name='s' onchange='zeigmirwasandufunktiondu()'>
<option value='0'> 0</option>
<option value='1'> 1</option>
<option value='2'> 2</option>
</select>
<p id='p'>W&auml;hle was aus, Du Browsernutzer, Du!</p>
</form>

</body>
</html>

Marilu
17.07.2003, 22:22:47
@c4: Genial.

Obwohl ich den Code gerade erst ansatzweise verstehe, funzt es :-0

Ich denke, Du hast das Tal der Ahnungslosen längst verlassen und dabei solche Leute wie mich dort unten gelassen.

Thx, Marilu

c4
17.07.2003, 22:42:32
Ich denke, Du hast das Tal der Ahnungslosen längst verlassen und dabei solche Leute wie mich dort unten gelassen. Nee Du, ich bin noch immer dort. ;) Ist ein Begriff aus sozialistischen Zeiten für Dresden. Funklöcher und Empfangsstörungen waren damals normal, wodurch man nicht immer alles erfahren hat. Daher Tal der Ahnungslosen. :)

Marilu
19.07.2003, 14:56:53
@c4: "Tal der Ahnungslosen": Ich sehe, man lernt nie aus.

Noch eine Frage zu Deiner Lösung: Der Code funzt recht gut. Mein nächster Schritt ist der Versuch, das Ganze zu dynamisieren und das Select über eine Abfrage bzw. ein Array aufzubauen.

Mit dem Select-Teil klappt das gut, aber wir bringe ich ein php-Array in den Case-Teil der Funktion? Ich schaffe es nicht, ein Array von php nach JS zu übergeben. Ich benötige hier ein 2-dimensionales Array mit dem Value-Wert für das Case und dem Text hinter innerHTML= :
case '0' : p.innerHTML='Text'; break;
Hat irgendjemand einen Tip?

c4
19.07.2003, 15:09:37
Also das ein Übergeben von PHP-Zeugs nach JavaScript nicht geht darf klar sein.

Holst Du die Daten für das <select>-Feld aus einer Datenbank? Dann müsste das doch ungefähr so klappen:<?php
$result=mysql_query('SELECT ...');
$result_ori=$result; // noch nie getestet, vielleicht klappt es :)
?>
<html>
<head>
<script type=...>
function zeigmirwasandufunktiondu() {
var temp=document.f.s.value;
switch (temp) {
<?php
$i=0;
while ($data=mysql_fetch_assoc($result)) {
echo " case '$i' : p.innerHTML='".$data['feldname']."'; break;n";
$i++;
}
?>
}
</script>
</head>
<body>
...
<form name='f' action='asd.lsd' method='post'>
<select name='s' onchange='zeigmirwasandufunktiondu()'>
<?php
$result=$result_ori;
$i=0;
while ($data=mysql_fetch_assoc($result)) {
echo " <option value='$i'> ".$data['feldname']."n";
$i++;
}
?>
</select>
<p id='p'>Wähle was aus, Du Browsernutzer, Du!</p>
</form>
</body>
</html> Ist natürlich noch einiges anzupassen, aber das sollte nicht weiter das Problem sein.

Marilu
19.07.2003, 15:43:07
Ich habs jetzt anders hingetrickst:

Da ich im Select ja den value-String mit einem Text fülle und den an die Funktion übergebe, habe ich den jeweiligen Ausgabetext nach einem Trennzeichen hier angehängt. Das value kann ich dann in der JS-Funktion durch das Trennzeichen wieder zerlegen und gebe den 2. Teil als innerHTML aus. Hat den Vorteil, ich brauche nicht mal das Case.

c4
19.07.2003, 15:56:04
Sehr fein. Da hat sich das andere ja auch fast erledigt.

Marilu
19.07.2003, 18:18:00
Original geschrieben von _c_4_
Sehr fein. [...]

TFTF (Haste den schon in Deiner Liste? Thanks For The Flowers)

c4
19.07.2003, 19:03:35
Jetzt ja. Hättest Du auch selber eintragen können. ;)