S. Schultz: Formulardaten per Button oder per Entertaste verschicken...

Hallo,

ich habe momentan folgendes kleines Problem:

Ich verwende folgenden Code für eine Suchfunktion in meiner HTML-
Seite:

<form name="suche">
    <input maxLength="30" name="searchstring" size="15"
     value="Suchbegriff">
     input type="button" value="Suchen"
     onClick="search()"
  </form>

Das Java-Script, dass von diesem Code aufgerufen wird, sieht
folgendermaßen aus:

<script language="JavaScript">
    <!--
        function search()
        {
        window.location="sourcecode.pl?searchstring="
        + document.suche.searchstring.value + "&lang=de"
        }
    //-->
  </script>

Sinn des Javascriptes ist es, wiederum ein Perl-Skript aufzurufen,
dass insgesamt 2 Parameter erwartet:

http://www.Domain.xy/sourcecode.pl?searchstring=blabla&lang=blabla

Den Wert "searchstring" kann der Benutzer ja in dem gleichnamigen
Textfeld eingeben, den Parameter "lang" habe ich fest im Javascript
zugewiesen!

Wenn ich jetzt auf den Button (Suchen) klicke, läuft alles wie
von mir gewünscht, dh. in der URL-Zeile des Browser steht folgendes:

http://www.Domain.xy/sourcecode.pl?
searchstring=benutzerdaten&lang=de

Drücke ich jedoch nach der Eingabe des Suchbegriffes in das Textfeld
direkt die Entertaste, erscheint folgender "Müll" in der URL-Zeile:

http://www.Domain.xy/meineHTMLseite.htm?
searchstring=benutzerdaten

Will ich ja nicht. Ist ja falsch und unvollständig! In einem alten Forumbeitrag hab ich ähnliches Problem gefunden, jedoch ohne wirklich funktionierende Lösung :-(:

http://forum.de.selfhtml.org/archiv/2000_2/t11877.htm

Ich hab's im HTML-Code auch schon mit OnSubmit="search()" statt mit onClick versucht, bringt aber alles nichts (auch nicht mit OnSubit="search(); return=false"). Was mache ich falsch?

Besten Dank (PS: Danke für die neue Version 8.0 ;-)"

  1. <form name="suche">
        <input maxLength="30" name="searchstring" size="15"
         value="Suchbegriff">
         input type="button" value="Suchen"
         onClick="search()"
      </form>

    function search()
            {
            window.location="sourcecode.pl?searchstring="
            + document.suche.searchstring.value + "&lang=de"
            }

    Sinn des Javascriptes ist es, wiederum ein Perl-Skript aufzurufen,
    dass insgesamt 2 Parameter erwartet:

    http://www.Domain.xy/sourcecode.pl?searchstring=blabla&lang=blabla

    Also da muß ich jetzt mal ganz blöd fragen: Wenn du schon ein Perl-Skript ansteuerst, warum um alles in der Welt setzt du dann da noch einen fürchterlich unsicheren Umweg über JavaScript dazwischen??

    Viel einfacher sollte es doch folgendermaßen gehen:

    <form name="http://www.Domain.xy/sourcecode.pl" method="get">
      <input maxLength="30" name="searchstring" size="15" value="Suchbegriff">
      <input type="hidden" name="lang" value="de">
      <input type="button" value="Suchen">
    </form>

    Und es funktioniert auch bei abgeschaltetem JavaScript.

    Siehe auch http://selfhtml.teamone.de/html/formulare/definieren.htm.

    Gruß,
      soenk.e

    1. Hallo Sönke,

      war mir ein Stück weit klar. Danke, aber ich hab' vorher nur die
      "halbe" Wahrheit geschrieben.

      Der von mir per Javascript übergebene angeblich "feste" Parameter "lang=" wird von diesem Javascript erzeugt,
      er ist also eigentlich nicht fix. Das Javascript
      schreibt in diesen Parameter z.B. den Browsernamen o.ä. rein,
      und nicht einen festen von mir definierten Wert.

      SAM

      1. war mir ein Stück weit klar. Danke, aber ich hab' vorher nur die
        "halbe" Wahrheit geschrieben.

        [..]

        Wo hast du dein onSubmit hingeschrieben? Anstelle des onClick oder da, wo es hingehört, zum <form>:

        <form name="suche" action="" onSubmit="search(); return false;">

        Blau,
          soenk.e

        1. Schon da, wo's hingehört, der schreibt aber trotzdem
          den ganzen "Müll" in die Adressleiste

          SAM

          war mir ein Stück weit klar. Danke, aber ich hab' vorher nur die
          "halbe" Wahrheit geschrieben.

          [..]

          Wo hast du dein onSubmit hingeschrieben? Anstelle des onClick oder da, wo es hingehört, zum <form>:

          <form name="suche" action="" onSubmit="search(); return false;">

          Blau,
            soenk.e

          1. Wo hast du dein onSubmit hingeschrieben? Anstelle des onClick
            oder da, wo es hingehört, zum <form>:

            <form name="suche" action="" onSubmit="search(); return false;">

            Schon da, wo's hingehört, der schreibt aber trotzdem
            den ganzen "Müll" in die Adressleiste

            Tja, ohne daß das jetzt eine echte Problemlösung wäre, aber im Notfall kannst du ja immernoch per Skript ein <input type=hidden> mit deinen Daten erzeugen und das Formular dann normal "starten" lassen.
            Ist vielleicht auch garnicht mal so unklug, weil universeller einsetzbar (d.h. auch ohne JavaScript).
              soenk.e

      2. Hi, Sam

        Der von mir per Javascript übergebene angeblich "feste" Parameter "lang=" wird von diesem Javascript erzeugt,
        er ist also eigentlich nicht fix. Das Javascript
        schreibt in diesen Parameter z.B. den Browsernamen o.ä. rein,
        und nicht einen festen von mir definierten Wert.

        JavaScript schließt _immer_ Leute aus.

        Gibt es einen speziellen Grund, warum ein Besucher die gewünschte Sprache nicht selbst wählen soll? Stichwort 'Radiobuttons'?

        LG Orlando