Markus Blondin: Auslesen einer Variabel im Formular...

Ich habe folgendes Problem.

Ich möchte in einem Formular (was per formmailer verschickt wird) die Empfänger-eMail abhängig vom eld Subject machen.

Folgendes habe ich schon geschrieben, es funzt aber anscheinend das Auslesen noch nicht:

<FORM method=POST action="http://www.domain.de/cgi-bin/formaill.pl">
<input type=hidden name="to" value="">

<script language="JavaScript">
subject = to;
          if(document.subject.value == "Support") res = "r1";
          else if (document.subject.value == "Webdesign") res = "r2";

if (res == "r1")
              {
              document.Feedback.to.value = "support@mail.de";
              }
          if (res == "r2")
              {
              document.Feedback.to.value = "webdesign@mail.de";
              }
</script>

<select name="subject" size=1>
  <option>Support
  <option>Webmaster
</select>

Wählt der User Support an, so soll die Mail an support@mail.de gehen. ( <input type="hidden" name="to" value="support@mail.de"> )
Wählt der User Webdesign an, so soll die Mail an webdesign@mail.de gehen. ( <input type="hidden" name="to" value="webmaster@mail.de"> )

Ich hoffe mir kann jemand helfen.

Besten Dank schonmal im Voraus
Markus Blondin

  1. Hi Markus,

    mir fallen spontan ein paar Punkte auf:

    1. Der Synatx für das Formular dürfte falsch sein; gib dem Formular
       einen Namen und sprich die Elemente dann mit

    document.FormularName.ElementName.value

    an.

    2. In Deiner Funktion ist "res" nicht definiert (oder ich bin zu
       müde, um es zu sehen).

    3. Wann und wo und überhaupt wird Dein Script denn aufgerufen???

    4. Du kannst den "echten" Wert eines <select>-Feldes nicht auf die
       selbe weise wie ein <input>-Feld abfragen, wo der String ver-
       glichen wird, sondern musst abfragen, welches Element (=Auswahl)
       aus diesem <select>-Feld nun markiert ist und dann entsprechend
       den Wert zuweisen.

    So klappts auf jeden Fall; gerade getestet:

    Das Formular:
    -------------

    <form name="feedback" action="tuwas" method="post">
        <input type="hidden" name="empfaenger" value="">    * s.u.
        <select name="wohin" size="1" onChange="anWen()">
          <option value="support@mail">Support</option>
          <option value="webmaster@mail">Webmaster</option>
        <select>
        <input type="submit" value="absenden">
        </form>

    Das Script:
    -----------

    <script language="JavaScript">
        function anWen()
        {
        for(i=0;i<document.feedback.wohin.length;++i)
        if(document.feedback.wohin.options[i].selected == true)
        dahin = document.feedback.wohin.options[i].value;
        document.feedback.empfaenger.value = dahin;
        }
        </script>

    * Anmerkung:

    Da das Script anWen() nur in Kraft tritt, wen man den Wert des
    <select>-Feldes tatsächlich ändert, nicht aber, wenn es nur den Focus
    bekommt, würde ich entweder auch einen "onFocus="anWen()" setzen oder - besser und einfacher - das Feld 'empfaenger' vordefinieren,
    so dass dieser Wert erst dann geändert wird, wenn wirklich eine
    andere als die Standardoption (also die erste Möglichkeit des
    <select>-Feldes) aktiviert wurde.

    So, und weil se heute alle so schön am mosern waren...
    DAS ALLES findest Du en detail in SELFHTML ;-)

    Und guck Dir noch mal in Ruhe an, wie Du Elemente via JavaScript
    ansprichst...

    Viel Spass beim ausprobieren & endgültig 'n8
       Alex

    1. Hi Markus II,

      jetzt hab ich meine Lösung gerade abgeschickt... als mir ganz
      spontan die Frage kam, wieso man nicht einfach Dein <select>-Feld
      mit den Namen versieht, den das verarbeitende Script als
      Empfängerfeld nimmt?

      Also - ungeprüft -: Wenn das Script die Mail an die Adresse schickt,
      die im Feld 'empfaenger' eingetragen ist und Du Deine Auswahl-
      möglichkeiten mit einem Wert versiehst (<option value="xyz">),
      dann müsste es eigentlich auch klappen.

      Also, statt...

      <input type="hidden" name="empfaenger" value="">

      einfach

      <select name="empfaenger" size="1">
              <option value="support@mail">Support</option>
              <option value="webmaster@mail">Webmaster</option>
          </select>

      schreiben und dann zumindets mal testen...

      ...denn jedes vernünftige FormMailer-Script gibt ja eh nur den
      Wert aus einem <select> aus, der wirklich aktiviert war...

      ...alles klar???

      so, geh jetzt ins Bett, eh mir noch mehr dazu einfällt ;-)

      Alex