Delfried: Onsubmit funktioniert nicht

Guten Tag,
habe seit langem mich heute mal wieder an JS gewagt.
Da ich mit einer bestimmten Suchfunktion nicht zu frieden bin, will ich mir mit Hilfe eines Formulars einen eigenen Link zusammen basteln.
Eig. ist soll das ganze ganz einfach sein:

1. Ich gebe in Feld den Suchbegriff ein.
2. Ich klicke auf den Submit-Button oder drücke Enter.
3. Das Javascript baut mir den Link zusammen.

<html>  
<head>  
<title>Flickr-Link</title>  
</head>  
<body>
<script type="text/javascript">  
function suche(b) {  
 var a = "Anfang vom Link";  
 var c = "Ende vom Link";  
 var d = a + b + c;  
 location = d;  
}  
</script>
<form name="form" onsubmit="suche(document.form.suche.value);">  
<input type="text" name="suche" size="30"></input>  
<input type="submit" value="Suche"></input>  
</form>  
</body>  
</html>

So sieht dann das ganze aus.
Doch onsubmit ruft leider nicht die Funktion auf.
Kann mir vllt. jemand sagen, was ich falsch mache.
Ich experimentiere jetzt schon ewig und auch google konnte mir nicht helfen.
Ich will die Funktio nicht mit einem Link aufrufen (wie es auch möglich wäre und wo es einigermaßen funktioniert hat), sondern mit einem Submitbutton,
damit ich das ganze mit Enter bestätigen kann.

Gruß, Delfried

  1. Hallo,

    ein <form>-Tag benötigt IMMER ein action-Attribut...

    MfG. Christoph Ludwig

    --
    Wo die Sprache aufhört, fängt die Musik an...
    Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
    Go to this
    1. Hallo,

      ein <form>-Tag benötigt IMMER ein action-Attribut...

      MfG. Christoph Ludwig

      Das habe ich auch schon probiert. Jedoch wird deswegen trozdem die Funktion nicht aufgerufen. Nur das man dann auf der angegebenen Seite landet.
      Ich mach i-etwas falsch, aufgrund dessen die Funktion nicht aufgerufen wird.
      ://
      Gruß, Delfried

      1. Hallo,

        Das habe ich auch schon probiert. Jedoch wird deswegen trozdem die Funktion nicht aufgerufen. Nur das man dann auf der angegebenen Seite landet.
        Ich mach i-etwas falsch, aufgrund dessen die Funktion nicht aufgerufen wird.

        ja ... man sollte ab und zu auf dei Fehler-Konsole hören ...
        wie wärs damit(aus testzwecken hab ich das script verändert :) ):

        <html>  
        <head>  
        <title>Flickr-Link</title>  
        </head>  
        <body>  
        <script type="text/javascript">  
        function suche(b) {  
         alert(b);  
        }  
        </script>  
        <form name="form" action="javascript:suche(document.form.suche.value);">  
        <input type="text" name="suche" size="30"></input>  
        <input type="submit" value="Suche"></input>  
        </form>  
        </body>  
        </html>
        

        MfG. Christoph Ludwig

        --
        Wo die Sprache aufhört, fängt die Musik an...
        Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
        Go to this
        1. Hey,
          vielen Dank.
          Endlich verstehe ich die schreibweise mit "javascript:**".
          Jetzt funktioniert es.
          Vielen Dank.
          Gruß, Delfried#
          PS: Den alert-Test hatte ich bei meiner Variante auch gemacht, aber auch da gab das Script keinen laut von sich.

          1. Hallo,

            Hey,
            vielen Dank.
            Endlich verstehe ich die schreibweise mit "javascript:**".
            Jetzt funktioniert es.
            Vielen Dank.
            Gruß, Delfried#
            PS: Den alert-Test hatte ich bei meiner Variante auch gemacht, aber auch da gab das Script keinen laut von sich.

            ABER: achte auf das, was martin gepostet hat!
            diese (grevierenden) Fehler hab ich übersehn ...

            MfG. Christoph Ludwig

            --
            Wo die Sprache aufhört, fängt die Musik an...
            Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
            Go to this
            1. ABER: achte auf das, was martin gepostet hat!
              diese (grevierenden) Fehler hab ich übersehn ...

              MfG. Christoph Ludwig

              Ok, thx, wusste nicht, dass es zum Problemen kommt bei dieser Bennenung.

              Gruß, Delfried

              1. Hallo,

                Ok, thx, wusste nicht, dass es zum Problemen kommt bei dieser Bennenung.

                nein ... ich mein nicht die benennung sondern das z.b. das </input> völlig falsch ist, oder statt location =   location.href= dastehen muss ...

                MfG. Christoph Ludwig

                --
                Wo die Sprache aufhört, fängt die Musik an...
                Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
                Go to this
      2. benenn mal deine Funktion anders

        1. Hallo,

          benenn mal deine Funktion anders

          wozu soll er das machen?
          so weit ich weis ist "suche" kein reserviertes wort. deshalb kann er es auch ohne bedenken benutzen...

          MfG. Christoph Ludwig

          --
          Wo die Sprache aufhört, fängt die Musik an...
          Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
          Go to this
          1. so weit ich weis ist "suche" kein reserviertes wort. deshalb kann er es auch ohne bedenken benutzen...

            es sei denn innerhalb eines Formulars hat "suche" noch eine andere Bedeutung.

            1. Hallo,

              es sei denn innerhalb eines Formulars hat "suche" noch eine andere Bedeutung.

              hmm ... stimmt!
              mein fehler... hätt ich eigentlich sehen müssen ^^

              MfG. Christoph Ludwig

              --
              Wo die Sprache aufhört, fängt die Musik an...
              Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
              Go to this
  2. Hallo,

    in welchem Browser testest du?

    <script type="text/javascript">
    function suche(b) {

    Zumindest im IE kann es problematisch sein, wenn Javascript-Objekte den gleichen Namen haben wie Formularelemente. Da würde ich mal den Namen entweder der Funktion oder des Formularelements ändern.

    var a = "Anfang vom Link";
    var c = "Ende vom Link";
    var d = a + b + c;
    location = d;

    Hier sollte deine Fehlerkonsole anschlagen - du möchtest den String an location.href zuweisen, nicht an location.

    <input type="text" name="suche" size="30"></input>
    <input type="submit" value="Suche"></input>

    Das input-Element ist per definitionem leer und braucht kein schließendes Tag. Es wird in XHTML mit der Kurzschreibweise /> geschlossen, in HTML ist das schließende Tag ein Fehler.

    Doch onsubmit ruft leider nicht die Funktion auf.

    Wie stellst du das fest? Warum kannst du so sicher sein?

    So long,
     Martin

    --
    Drei Sachen vergesse ich immer wieder: Telefonnummern, Geburtstage und ... äääh ...
    1. Hallo,

      in welchem Browser testest du?

      <script type="text/javascript">
      function suche(b) {

      Zumindest im IE kann es problematisch sein, wenn Javascript-Objekte den gleichen Namen haben wie Formularelemente. Da würde ich mal den Namen entweder der Funktion oder des Formularelements ändern.

      var a = "Anfang vom Link";
      var c = "Ende vom Link";
      var d = a + b + c;
      location = d;

      Hier sollte deine Fehlerkonsole anschlagen - du möchtest den String an location.href zuweisen, nicht an location.

      <input type="text" name="suche" size="30"></input>
      <input type="submit" value="Suche"></input>

      Das input-Element ist per definitionem leer und braucht kein schließendes Tag. Es wird in XHTML mit der Kurzschreibweise /> geschlossen, in HTML ist das schließende Tag ein Fehler.

      Doch onsubmit ruft leider nicht die Funktion auf.

      Wie stellst du das fest? Warum kannst du so sicher sein?

      So long,
      Martin

      Ich teste nur auf Firefox und das Script ist auch ausschließlich für mich.
      Ansonsten danke für die Antwort.
      Das die Funktion nicht funktioniert hat, habe ich daraus geschlossen, dass
      alert("Hallo") nicht ausgegeben wurde.
      Naja, jetzt ist das Problem ja gelöst.
      Vielen Dank,
      Gruß, Delfried

    2. Hallo,

      Zumindest im IE kann es problematisch sein, wenn Javascript-Objekte den gleichen Namen haben wie Formularelemente.

      Das gilt m.W. für IDs, aber nicht Namen.

      Mathias

      1. Hallo,

        Da würde ich mal den Namen entweder der Funktion oder des Formularelements ändern.

        Okay, Unrecht hast du nicht. Das Problem hier ist aber ein anderes: Bei Inline-Event-Handler liegt das Element (explizit: this) in der Scope-Chain.

        <form action="bla" onsubmit="alert(feld + '\n' + action + '\n' + nodeName); return false;">
        <input name="feld">
        </form>

        Das betrifft m.W. alle Browser.

        Mathias

    3. du möchtest den String an location.href zuweisen, nicht an location.

      Das müsste beides funktionieren (vgl. Netscape JS 1.3).

      Mathias