Formmailer mit Checkboxes, onClick und Submit

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Formmailer mit Checkboxes, onClick und Submit

    Hallo zusammen,

    ja ich weiß, Google ist mein Freund, aber ich wühle mich schon seit drei Tagen durch diese Suchmaschine und werde einfach nicht fündig, daher werde ich mein Problem hier darstellen:

    Ich habe einen Formmailer entwickelt, der mit Checkboxen, Pulldown-Menüs und Textfeldern ausgestattet ist und alle Daten auch wunderbar per Mail versendet. Bei einigen Checkboxen ist die onClick-(bzw. bei PD-Menüs die onChange-)Funktion hinterlegt, damit wenn eine Option gewählt wird, weitere von dieser Option abhängige Felder angezeigt werden. Quasi ein dynamischer Formmailer. Dies habe ich mit onClick="submit()" realisiert und es funktioniert auch wunderbar.

    Wenn ich allerdings solche besagte Optionen auswähle, die weiter unten auf der Seite vorhanden sind, springt das Formular zum Seitenanfang. Dies ist ziemlich nervig, wenn mehrere Optionen ausgewählt werden müssen, da dann immer die komplette Seite runtergescrollt werden muss.

    Eine Idee die ich gefunden habe war mit Ankern dies zu realisieren. Den Anker über die Submit()-Funktion anzuspringen, wäre m.E. die einfachste Lösung, aber da bin ich überfragt, wie oder ob das überhaupt von statten geht. Daher habe ich versucht das Formular in mehrere Formulare mit Anker-IDs zu splitten. Das klappte auch soweit ganz gut, nur wenn ich in einem anderem Formular eine onClick-Checkbox auswähle, werden die Daten aus den anderen Formularen entfernt.

    Weiterhin habe es mit return false; hinter dem submit(); versucht, leider war dies auch ohne Erfolg, denn dadurch wurden die Daten gar nicht erst übergeben und die Felder erschienen erst nicht.

    Auszug aus dem Formular:
    PHP-Code:
    <body>
    <form action="<?php echo $_SERVER["php_self"]; ?>" name="daten" id="daten" method="post">
    <table>
    [...]
      <tr>
        <td colspan="2" align="left" valign="top">
          <input id="blubb" type="checkbox" name="sonstiges[]" value="blubb" onclick="submit();"
    <?php 
      
    if (isset($sonstiges) && in_array('blubb'$sonstiges)) echo " checked"
    ?>
          > Blubb
    <?php
      $kategorie
    ='blubb';
      if (isset(
    $sonstiges) && in_array($kategorie$sonstiges)) 
        {
          echo 
    '
          <select name="'
    .$kategorie.'1">
          <option></option>'
    ;
          [...]
        }
    ?>
        </td>
      </tr>
    </table>
    Meine Frage also: Wie kriege ich es hin, die Daten zu übertragen, ohne dass das Formular im Browser wieder komplett an den Anfang springt?

    Gruß und schönes WE
    Jay
    Zuletzt geändert von jayleferm; 09.11.2007, 15:03.

  • #2
    brich erstmal deine Code gemäß den Regeln um, sonst wird dir so schnell niemand helfen
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Sorry, hier lief alles wieder hektisch. Typisches Freitagnachmittagssyndrom.

      Kommentar


      • #4
        Du definierst ein paar Anker in deinem Formularen und deine onChange-Handle erweiterst du so, dass das action-Attribut des Formulars um diesen Anker erweitert wird. Also:
        PHP-Code:
        <input type="checkbox" ... onclick="this.form.action+='#anker';submit();" /> 
        Ist natürlich ungetestet, aber so sollte das gehen!

        Kommentar


        • #5
          Ah super, genau das habe ich gesucht, und es funzt wie ne Eins!

          Besten Dank!!!

          Kommentar

          Lädt...
          X