document.submit() + value?

  • Hi,

    Ich habe ein Problemchen.
    Ich habe ein Formular, das eine Eingabe an eine .php Datei weitersendet:

    HTML
    <form action="s.php" name="search" method="get">
     <input name="s"type="text" size="50" maxlength="50">
    </form>

    Jetzt habe ich ein Dropdownmenü das nach diesem Schema aufgebaut ist:

    HTML
    <li><a href="#" class="underline">A</a></li>
          <li><a href="#" class="underline">B</a></li>
          <li><a href="#" class="underline">C</a></li>
          <li><a href="#" class="underline">D</a></li>

    Ich möchte nun, dass wenn man auf den Link "A" im Dropdownmenü klickt, er das Formular (name="search") abschickt und ihm neben der Variable für name="s" auch noch den Wert des Links mitgibt, also z.B:

    Ich klicke auf den Link "A" dann sendet er an s.php:

    Code
    ?s=eingabe&link=A

    Wenn ich auf den Link "B" klicke, dann sendet er an s.php:

    Code
    ?s=eingabe&link=B

    Wie kann ich das realisieren?
    Also das er das Formular über den Link absendet schaffe ich mit

    Code
    document.search.submit()

    Nur wie kann ich die Variable noch dranhängen?

    Ich hoffe ihr versteht mein Problem, dankeschön! :)

  • Ähm wann sendet er das Formula ab, also wo steht bei dir das
    document.search.submit()


    Gib ganzen Code dann mach ich es dir


    mfg

  • So, hier habe ich es eingebaut: Nur weiter weis ich nicht...

    Mehr gibts da eigentlich nicht :)
    Danke für die Hilfe!

  • Bau für den Wert des Links ein zusätzliches hidden Feld ein. Also

    HTML
    <form action="s.php" name="search" method="get">
     <input type="hidden" name="link_wert">
     <input name="s" type="text" size="50" maxlength="50">
    </form>

    Dann brauchst du folgende Javascript Funktion (bau sie im <head> ein):

    HTML
    <script type="text/javascript">
      function send_form (link)
        {
        // wert des hidden felds auf den wert der link url setzen
        document.search.link_wert.value = link.getAttribute('href');
        document.search.submit();
        return false;
        }
    </script>

    (Wenn das nicht klappt, nimm mal das return false; raus)

    Und die links sehen dann so aus:

    HTML
    <li><a href="s.php?s=eingabe&link=A" onclick="send_form(this);" class="underline">A</a></li>

    PS. wenn jemand Javascript deaktiviert hat, wird das onclick nicht ausgeführt und somit wird stattdessen der Link in href="" aufgerufen. Mach also am besten die s.php so, dass sie auch Resultate liefert, wenn man sie direkt aufruft. Dann ist dein Skript für JS- und nicht JS-Browser geeignet. Wenn du nichts weisst was ich meine, deaktivier mal Javascript und klick auf einen der Links.

    2 Mal editiert, zuletzt von phore (28. Mai 2009 um 17:48)

  • Okay, das mit dem Link klappt schonmal nur wie schaffe ich es, dass er für

    Code
    s=eingabe

    Den Wert aus dem Feld mit Namen "s" nimmt?
    Also es ist ja ein Eingabefeld und das soll er direkt mit übernehmen.

    Wie schaff ich das ?

  • Das passiert automatisch. Wenn der Benutzer bereits was eingegeben hat, und das Formular dann per JS abgeschickt wird, werden alle Felder des Formulars abgeschickt, also auch das "s" Feld und der darin enthaltene Wert.

  • @treadstarter dir ist klar wenn kein js an ist geht nix

    @phore nächstmal lässt es halt oder sagst gleich das du was machst, so kann man sich arbeit sparen....

  • Perfekt, so funktionierts.

    Ja, mir ist klar, dass ich JS anhaben muss, wegen diesem Dropdownmenü habe ich JS sowieso an.

    Aber hauptsache es klappt!
    Vielen Dank für die Geduld und Hilfe ;)

    Schönen Abend noch.

  • Du schon, deine Users vielleicht nicht.

    @Pion: du hast "Gib ganzen Code dann mach ich es dir" geschrieben.
    Da bin ich davon ausgegangen, dass du noch nichts gemacht hast, da er noch kein Code gepostet hat bevor ich begann, meine Antwort zu schreiben.
    Wir sollten einfach nicht so schnell sein, dann würde sowas nicht passieren :)

    2 Mal editiert, zuletzt von phore (28. Mai 2009 um 18:06)

  • Jup aber erstaunlich wie wenige das Deaktiviert haben, aber einigen wir uns doch auf folgendes nicht optimales , aber besser als nix:

    <noscript>
    Um Das Formular abschicken zu können Aktivieren Sie bitte Javascript.
    </noscript>

    @phore
    stimmt also beim nächsten mal darfst du den code schreiben^^

    Einmal editiert, zuletzt von Pion (28. Mai 2009 um 18:09)

  • Ich nehme mittlerweile eh keine Rücksicht auf User ohne JS. Sind selber Schuld, dass sie alle geile Funktionen im Web verpassen :) Wollte ihn nur darauf aufmerksam machen.