Nochmal dynamisches Formular

Aranita

Grünschnabel
Hallo,

leider bin ich in Javascript völlig unbefleckt, daher kann ich nicht das Beispiel mit den Zusatzfeldern so anpassen, wie ich es brauche.

Folgendes Problem:

Ich habe ein Formular, wo man per Dropdown-Menu eine Auswahl treffen kann. Im nächsten Feld soll dann automatisch in Beziehung zu dieser Auswahl ein bestimmter Value gesetzt werden, und das ohne Übergabe an eine neue Seite oder Reload.

Beispiel:
<select name="anrede">
<option>Herr
<option>Frau
<option>Firma
</select>

Gibt man oben "Herr" ein, soll das nächste Feld so aussehen:
<input type="text" name="anrede_text" value="Sehr geehrter Herr">

Bei "Frau" so:
<input type="text" name="anrede_text" value="Sehr geehrte Frau">

und bei Firma so:
<input type="text" name="anrede_text" value="Sehr geehrte Damen und Herren">

Kann mir jemand helfen, wie ich das realisieren kann?

Vielen Dank im Voraus!
 
Hi,

Du könntest ein Array erstellen, der an den entsprechenden Stellen als Werte die Anreden
enthält, die später eingeblendet werden sollen. Im onchange-Event der select-Gruppe
änderst Du den gewünschten Anredetext.
HTML:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta name="author" content="Quaese" />
<script type="text/javascript">
<!--
    // Anrede-Array
    var arrAnrede = new Array();

    arrAnrede[0] = "";
    arrAnrede[1] = "Sehr geehrter Herr";
    arrAnrede[2] = "Sehr geehrte Frau";
    arrAnrede[3] = "Sehr geehrte Damen und Herren";
//  -->
</script>
</head>
<body>
<form name="formTest" action="" method="">
    <div>
        <select name="" size="" onchange="this.form.anrede_text.value = arrAnrede[this.selectedIndex];">
            <option value="default">- bitte auswählen -</option>
            <option value="Herr">Herr</option>
            <option value="Frau">Frau</option>
            <option value="Firma">Firma</option>
        </select>
    </div>
    <div>
        <input type="text" name="anrede_text" style="width: 200px;" />
    </div>
</form>
</body>
</html>
Ciao
Quaese
 
Macht nichts, aufgeschoben ist nicht aufgehoben, da kannst mich beim Wort nehmen!

Beim Coden ist mir jetzt noch ein Problem untergekommen: Kann man mit dieser Methode auch zwei Felder gleichzeitig ändern? Also nicht nur den Anredetext, sondern ein weiteres Feld? Und: Wie kann ich PHP-Variablen dort einbauen?

EIn Beispiel, was das verdeutlicht:

Ich habe eine Datenbank mit Postleitzahlen und Orten. Gibt jemand eine Postleitzahl ein, soll dann im nächsten Feld der Ort und im übernächsten das Land automatisch gesetzt werden. Wie ich die Daten per PHP aus der Datenbank in ein Array bekomme, ist mir klar - nur wie kann ich das an Javascript übergeben und wie beide Felder dann ändern?

Danke nochmal im Voraus.
 
Zuletzt bearbeitet:
Hi,

Du könntest zum Beispiel den JavaScript-Bereich mit PHP ins Dokument schreiben und hier
die erforderlichen Arrays deklarieren und mit Werten füllen. Somit ist es Dir möglich auf PHP-Variable
zuzugreifen.

Nachstehend ein kleines Beispiel, wobei Du sicherlich die PHP-Arrays an Deine Bedürfnisse
anpassen musst.
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta name="author" content="Quaese" />
<?php
    // Array mit Postleitzahlen
    $arrPLZ = array();
    $arrPLZ[0] = "";
    $arrPLZ[1] = "84567";
    $arrPLZ[2] = "76564";
    $arrPLZ[3] = "12345";

    // Array mit Orten
    $arrOrt = array();
    $arrOrt[0] = "";
    $arrOrt[1] = "München";
    $arrOrt[2] = "Passau";
    $arrOrt[3] = "London";

    // Array mit Ländern
    $arrLand = array();
    $arrLand[0] = "";
    $arrLand[1] = "Deutschland";
    $arrLand[2] = "Deutschland";
    $arrLand[3] = "England";

    // JavaScript-Bereich öffnen
    echo("<script type=\"text/javascript\">\n");
    echo("<!--\n");
    // JavaScript-Arrays für Orte und Länder deklarieren
    echo("var arrOrt = new Array();\n");
    echo("var arrLand = new Array();\n");

    // Zählvariable initialisieren
    $i = 0;

    // Arrays für Orte und Länder durchlaufen
    foreach($arrOrt as $key => $entry){
        // JavaScript-Array für Orte füllen
        echo("arrOrt[".$key."]=\"".$entry."\";\n");
        // JavaScript-Array für Länder füllen
        echo("arrLand[".$i."]=\"".$arrLand[$i]."\";\n");
        // Zählvariable inkrementieren
        $i++;
    }

    // JavaScript-Bereich wieder schliessen
    echo("-->\n");
    echo("</script>\n");
?>

<script type="text/javascript">
<!--
    function setValues(objSel, objForm){
        objForm.txtOrt.value = arrOrt[objSel.selectedIndex];
        objForm.txtLand.value = arrLand[objSel.selectedIndex];
    }
//  -->
</script>
</head>
<body>
<form name="formTest" action="" method="">
    <div>
        <?php
        // Select-Gruppe anhand des PLZ-Arrays dynamisch erzeugen
        echo("<select name=\"selPLZ\" size=\"\" onchange=\"setValues(this, this.form);\">\n");
        // PLZ-Array durchlaufen
        foreach($arrPLZ as $key => $entry){
            // Falls es sich um die erste PLZ-Komponente handelt
            if($key == 0){
                echo("\t\t<option value=\"default\">- bitte auswählen -</option>\n");
            }else{
                echo("\t\t<option value=\"".$entry."\">".$entry."</option>\n");
            }
        }
        echo("\t</select>\n");
        ?>
    </div>
    <div>
        <input type="text" name="txtOrt" style="width: 200px;" />
    </div>
    <div>
        <input type="text" name="txtLand" style="width: 200px;" />
    </div>
</form>

</body>
</html>
Vielleicht bringt Dich das weiter.

Ciao
Quaese
 

Neue Beiträge

Zurück