Auswahlliste onchange()

  • Hallo Pascal,

    habe alle Varianten aus Deiner Referenz probiert.

    Es tut sich einfach nichts.


    Der submit-Knopf funktioniert.


    Einen Link kann ich nicht posten. Dieser Entwicklungsrechner ist von außen nicht erreichbar.


    Huch, jetzt sind alle Zeilenschaltungen aus dem Code verschwunden :-(

    PHP
    1. <form action="index.php" target="_top" method="post" name="tarifrechner"><div style="border: 8px solid #FFFFFF;"><p align="center" style="width:900px;font-family:Arial,sans-serif; font-size:18px; color:blue">Auftrags-Erfassung</p><a style="width:110px;font-family:Arial,sans-serif; font-size:12px; color:black">Auftragsart:</a><select onchange="javascript:this.form.submit()" name="selAuftragsArt" id="selAuftragsArt" style="font-family:Arial,sans-serif; font-size:12px; color:blue "><?php if ($_REQUEST['selAuftragsArt'] == "bitte wählen"){  echo "<option selected value='bitte wählen' >bitte wählen</option>" ; } else {  echo "<option  value='bitte wählen' >bitte wählen</option>" ; } if ($_REQUEST['selAuftragsArt'] == "Lieferung"){  echo "<option selected value='Lieferung' >Lieferung</option>" ; } else {  echo "<option  value='Lieferung' >Lieferung</option>" ; } if ($_REQUEST['selAuftragsArt'] == "Abholung"){  echo "<option selected value='Abholung' >Abholung</option>" ; } else {  echo "<option  value='Abholung' >Abholung</option>" ; } if ($_REQUEST['selAuftragsArt'] == "Umlagerung"){  echo "<option selected value='Umlagerung' >Umlagerung</option>" ; } else {  echo "<option  value='Umlagerung' >Umlagerung</option>" ; }?></select><input type="submit" name="submit" value="submit">
  • Ist eventuell an der Definition vom SELECT etwas falsch?


    Warum wird der Code hier ohne Zeilenschaltung dargestellt?

    Ich habe den mit Copy&Paste hier eingestellt.


    Hab grade noch mal versucht. Geht nicht.


    PHP
    1. <select  onchange="OnSelectionChange()"  name="selAuftragsArt"  id="selAuftragsArt"  style="font-family:Arial,sans-serif; font-size:12px; color:blue"><?php if ($_REQUEST['selAuftragsArt'] == "bitte wählen"){  echo "<option selected value='bitte wählen' >bitte wählen</option>" ; } else {  echo "<option  value='bitte wählen' >bitte wählen</option>" ; }  if ($_REQUEST['selAuftragsArt'] == "Lieferung"){  echo "<option selected value='Lieferung' >Lieferung</option>" ; } else {  echo "<option  value='Lieferung' >Lieferung</option>" ; }  if ($_REQUEST['selAuftragsArt'] == "Abholung"){  echo "<option selected value='Abholung' >Abholung</option>" ; } else {  echo "<option  value='Abholung' >Abholung</option>" ; }  if ($_REQUEST['selAuftragsArt'] == "Umlagerung"){  echo "<option selected value='Umlagerung' >Umlagerung</option>" ; } else {  echo "<option  value='Umlagerung' >Umlagerung</option>" ; }?></select><input type="submit" name="submit" value="submit">
  • Hi,

    ich fürchte ich habe ein falsches Verständnis über die Abläufe.


    Hab alles versucht, was ich zu dem Thema gefunden habe.


    Auch das funktioniert nicht: "Die Form kannst du mit onchange="this.form.submit()" versenden."

    Möglicherweise funktioniert ja irgendetwas und ich habe eine falsche Erwartung.


    Ich möchte, wenn in der DropDownListe etwas ausgewählt wird, daß dann der submit ausgeführt wird.

    Genauso als wenn ich per Hand den submit Button klicke.



    Warum werden aus dem Code die Zeilenschaltungen entfernt? Was mache ich falsch?

  • Hi! Da du keinen Link gepostet hast, hat sich das jetzt etwas länger gezogen. Ich habe deinen Code jetzt doch mal selbst ausprobiert und gefunden, woran es wahrscheinlich liegt. Dein input-Button darf nicht den Namen "submit" tragen. Normalerweise wäre this.form.submit die Methode, mit der du das Formular abschickst (also this.form.submit()). Wenn du aber ein Formularfeld oder -button mit dem Namen "submit" hast, verweist this.form.submit auf eben jenes und lässt sich nicht mehr als Funktion verwenden.

    Wenn du in deinem Browser die JavaScript-Konsole aufrufst, wird dir dort der Fehler "this.form.submit is not a function" angezeigt, mit dem man auch darauf kommen könnte. Also bitte immer einen Link oder wenigstens die Fehlermeldung posten, sonst bist du darauf angewiesen, dass jemand deinen Code bei sich einbaut und ausführt. ;-)

    Wenn es damit immer noch nicht funktioniert, bitte den ganzen Code posten oder besser irgendwo ausführbar hochladen, damit man alle Nebenwirkungen sehen kann.

  • Hi Harmageddon,

    danke, daß Du Dich damit auseinandergesetzt hast, trotz fehlendem Link,

    Link kann ich leider nicht posten. Rechner ist nicht im Netz.


    Die JavaScript-Konsole hatte ich bisher nicht aufgerufen. (mangels Know-How)

    Deine Erklärung erscheint logisch.

    Allerdings habe ich den Code kopiert mit dem "submit-Button" aus dem folgenden Link.

    Dort scheint es funktioniert zu haben.

    https://stackoverflow.com/ques…4228/php-submit-on-select


    Werde mir das gleich mal anschauen


    Danke Harro

  • Allerdings habe ich den Code kopiert mit dem "submit-Button" aus dem folgenden Link.

    Dort scheint es funktioniert zu haben.

    https://stackoverflow.com/ques…4228/php-submit-on-select

    Nein du hast ihn nicht ganz kopiert. In den ersten beiden Beispielen ist kein Submitbutton und in dem in dem er ist wird ein <noscript> Tag genutzt. Dieser Tag wird nur genutzt, wenn kein Javascript aktiviert ist also die onChange() gar nicht funktioniert.

    Aber wäre ich auch nicht so einfach drauf gekommen :)

  • kaum macht man es richtig, schon geht's. :-)

    Danke. :thumbup:

    Für mich als Neuling wäre es unlösbar gewesen.


    Aber wenn's dann geht ist es schon ein gutes Gefühl.


    Danke noch mal

    Harro

  • Noch ein kleiner Tipp: Wenn du den Code später umbaust, tust du dich damit leichter, wenn du weniger Duplikate drin hast (z.B. wenn du "Umlagerung" durch ein anderes Wort ersetzen willst).


    Du könntest diese Blöcke hier:


    PHP
    1. if ($_REQUEST['selAuftragsArt'] == "bitte wählen"){
    2. echo "<option selected value='bitte wählen' >bitte wählen</option>" ;
    3. } else {
    4. echo "<option value='bitte wählen' >bitte wählen</option>" ;
    5. }

    ändern in:

    PHP
    1. echo "<option ";
    2. if ($_REQUEST['selAuftragsArt'] == "bitte wählen"){
    3. echo "selected ";
    4. }
    5. echo "value='bitte wählen' >bitte wählen</option>" ;

    Dann unterscheidet sich definitiv nur das "selected" und alles andere bleibt gleich, egal welche Auswahl man trifft.


    Ah, und falls noch nicht geschehen: Wie stelle ich einen Thread auf "gelöst"? ;-)

  • Hallo Harmageddon,

    hab das Coding entsprechend Deiner Anregung angepaßt und geringfügig erweitert.

    Ist in der Tat deutlich servicefreundlicher.

    Code
    1. $Auswahl = "bitte wählen";
    2. echo "<option ";
    3. if ($_REQUEST['selAuftragsArt'] == $Auswahl){
    4. echo "selected ";
    5. }
    6. echo "value=$Auswahl >$Auswahl</option>" ;

    Danke Harro