dm: Suchfunktion mit Radio

Morgen,
Ich haette gerne auf einer Seite eine Suchfunktion so wie sie frueher mal bei CNNfn war, also wo man vor absenden der query waehlen kann, ob in der Seite oder im Web (mit Google) gesucht werden soll.
Beides fuer sich funktioniert, eine Loesung mit einem Eingabefeld waere aber mE eleganter. Ich stell mir das so vor, dass ich mit einer form abfrage wo gesucht werden soll und dann wenn der erste Radio gecklickt ist (den ich auch als Default mit checked darstelle) die eigene Suchroutine aufgerufen wird, wenn der Zweite, dann die Query an Google uebergeben wird, also braechte ich ein if-else Script, in dem eine Funktion aufgerufen wird, und daran knabbere ich. So schauts aus:

  • Eingabe der Suchbegriffe:
    <form onSubmit="return suchwo()" NAME="qf">
    <input type=radio name="wo" checked value="seite"> diese Seite <input type=radio name="wo" value="google"> Google<br><input type="text" name="query" size=20>  <input type=submit value="Search"></form>

  • So wird funktionierend an Google uebergeben:
    <form method=get action="http://www.google.com/search" target="_blank"><input type=text name=q size=50></form>

  • Und so stell ich mir das dazugehoerende if-else vor:
    function suchwo()
      {
       if(document.qf.wo[0].checked == true)
        {
         hier der Funktionsaufruf zur internen suche();
        }
       else
        {
         tja, und hier die Uebergabe and Google;
        }
      }

Kann jemand weiterhelfen? Danke!
Cheers, dm.

  1. Hallo,

    Ich haette gerne auf einer Seite eine Suchfunktion so wie sie frueher mal bei CNNfn war, also wo man vor absenden der query waehlen kann, ob in der Seite oder im Web (mit Google) gesucht werden soll.

    Zuerst einmal vorab: Wer braucht so etwas? Wenn ich mit Google suchen will, gehe ich doch auf google.de oder benutze die Toolbar. Ich schau doch nicht auf die cnn-Homepage, um das Internet mit Google zu durchsuchen.

    • Eingabe der Suchbegriffe:
      <form onSubmit="return suchwo()" NAME="qf">
      <input type=radio name="wo" checked value="seite"> diese Seite <input type=radio name="wo" value="google"> Google<br><input type="text" name="query" size=20>  <input type=submit value="Search"></form>
    • So wird funktionierend an Google uebergeben:
      <form method=get action="http://www.google.com/search" target="_blank"><input type=text name=q size=50></form>

    Du musst dein Eingabefeld natürlich an die Bedürfnisse für Google anpassen:

    <form onSubmit="return suchwo()" NAME="qf">
    <input type="text" name="q" size=20 />
                            ^^^
    Wenn Google ein input-Feld mit dem namen "q" braucht, musst du dich danach richten.

    • Und so stell ich mir das dazugehoerende if-else vor:

    Da musst du dann nur noch die action des Forms sezten:

    function suchwo()
    {
      if(document.qf.wo[0].checked == true) {
        document.qf.action = "internesuche.pl";
      } else {
        document.qf.action = "http://www.google.de/search";
      }
      return true;
    }

    Wobei "internesuche.pl" die URL zur internen Seitensuche ist.
    Natürlich solltest du noch die Form-Method (post oder get?) entsprechend setzen.

    Nachteil: das funktioniert nur bei eingeschaltetem JavaScript.

    Mir fällt gerade noch eine 2. Möglichkeit ein: du definierts ein Form mit der action für deine interne Seitensuche und dem event-Handler onSubmit="return suchwo()". In der funktion suchwo schreibst du folgendes:

    function suchwo()
    {
      if(document.qf.wo[0].checked == true) {
        return true;  /* Formular abschicken */
      } else {
        location.href = "http://www.google.de/search?q=" + encodeURIComponent(document.qf.q.value)
        return false; /* Formular nicht abschicken */
        /* eigentlich sinnlos, da die Seite sowieso bereits verlassen wurde, aber IMHO trotzdem besser */
      }
      return true;
    }

    Nicht getestet, müsste aber ungefähr so funktionieren.

    Robert

    http://www.designauswahl.here.de
    mit kostenlosem Webseiten-Generator ROBE.dit
    [more than a HTMLE.dit]