Mackie: JavascriptFunktion wird nicht innerhalb des Formulars ausgeführt

Hallo,

habe folgendes Problem: Ich möchte mit einem HTML-Button eine Javascript-Funktion aufrufen. Der Button befindet sich in einer Tabelle, in einem Formular:

echo "<form action=\"../Speichern/index.php\" method=\"POST\">";  
echo "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" >";  
echo "<tr>";  
echo "<td><input type=\"button\" value=\"test\" onclick=\"test()\">";  
echo "</td>";  
echo "</tr>";  
echo "</table>";  
echo "</form>";  

Die Javascript-Funktion befindet sich in der selben Datei und erzeugt zum Testen ein alert-Fenster:

<script type="text/javascript">  
function test()  
{  
   alert("test");  
}  
</script>  

Klickt man den Button, so wird die Funktion nicht aufgerufen. Erzeuge ich den gleichen Button außerhalb des Formulars, allerdings schon.

Kann mir jemand weiterhelfen?

  1. Hi,

    habe folgendes Problem: Ich möchte mit einem HTML-Button eine Javascript-Funktion aufrufen. Der Button befindet sich in einer Tabelle, in einem Formular:

    Kurz und bündig: nicht nachvollziehbar.

    Warum zeigst du dann PHP-Code?
    Bei einem Problem mit Javascript ist nur Javascript relevant.
    Bei einem Problem mit Javascript und dem DOM (das, was der Browser aus dem HTML macht) ist nur Javascript und HTML interessant.

    echo "<form action="../Speichern/index.php" method="POST">";

    echo "<table cellpadding="0" cellspacing="0" border="0" >";
    echo "<tr>";
    echo "<td><input type="button" value="test" onclick="test()">";
    echo "</td>";
    echo "</tr>";
    echo "</table>";
    echo "</form>";

      
    Ohne das unnötige PHP Zeugs und der Lesbarkeit wegen eingerückt:  
      
    ~~~html
    <form action="../Speichern/index.php" method="POST">  
      <table cellpadding="0" cellspacing="" border="0" >  
        <tr>  
          <td>  
            <input type="button" value="test" onclick="test()">  
          </td>  
        </tr>  
      </table>  
    </form>
    

    "cellpadding", "cellspacing" und "border" sollten per CSS angegeben werden, nicht über diese Attribute.

    Wenn du einen Button willst ist es meist schöner auch ein button-element zu verwenden, anstelle des input[type=button].

    Event-Listener via HTML-Attribut anzuhängen ist auch keine schöne Lösung. Dafür gibt es .addEventListener in Javascript.

    Die Javascript-Funktion befindet sich in der selben Datei und erzeugt zum Testen ein alert-Fenster:

    Sie befindet sich sicher auch nur zum Testen in der selben Datei?

    Klickt man den Button, so wird die Funktion nicht aufgerufen. Erzeuge ich den gleichen Button außerhalb des Formulars, allerdings schon.

    Wie bereits oben gesagt, nicht nachvollziehbar. Bei mir wird der alert() ausgeführt.

    Kann mir jemand weiterhelfen?

    Ich nicht. Bitte zeige ein Beispiel dass den Fehler bzw. das unerwünschte Verhalten eindeutig zeigt. Am besten als Online-Beispiel. Notfalls einfach Code im Forum, aber dann bitte kein unnötiges PHP drumrum.

    ~dave

    1. Hi,

      danke für deine Antwort und für deine Tipps.

      "Sie befindet sich sicher auch nur zum Testen in der selben Datei?"

      Ja, aber wenn ich sie auslagere, habe ich denselben Effekt. Bei mir macht es keinen Unterschied.

      "Ich nicht. Bitte zeige ein Beispiel dass den Fehler bzw. das unerwünschte Verhalten eindeutig zeigt. Am besten als Online-Beispiel. Notfalls einfach Code im Forum, aber dann bitte kein unnötiges PHP drumrum."

      Verstehe ich dich richtig, dass du evtl. helfen könntest, wenn ich den Code "richtig" poste? Wie genau wird es für dich nachvollziehbarer?

      Danke und liebe Grüße.

      P.S.: Weiß leider nicht, wie man hier zitieren kann, der BB-Code [quote] scheint nicht zu funktioneren...

      1. Hi,

        bist du dem Link gefolgt den ich gepostet hatte?
        Funktionierts dort bei dir auch nicht?

        P.S.: Weiß leider nicht, wie man hier zitieren kann, der BB-Code [quote] scheint nicht zu funktioneren...

        Einfach indem man ein > davor setzt.

        z.B. so

        ~dave

      2. Hallo,

        Verstehe ich dich richtig, dass du evtl. helfen könntest, wenn ich den Code "richtig" poste? Wie genau wird es für dich nachvollziehbarer?

        entweder du postest den vollständigen clientseitigen(!) Code, aber bitte auf das absolute Minimum reduziert; oder du gibst die URL eines Online-Beispiels an. Letzteres ist für die Helfer angenehmer, weil sie nicht erst selbst ein lauffähiges Mini-Projekt bauen müssen.

        P.S.: Weiß leider nicht, wie man hier zitieren kann, ...

        Indem man die Zitatmarkierungen einfach so lässt, wie sie im Antwortfeld vorgegeben sind: Mit der Zeichenfolge "»» " am Absatzbeginn.

        Ciao,
         Martin

        --
        Männer haben nur eine Angst: Die Angst, kein Mann zu sein.
          (Liv Tyler, US-Schauspielerin)
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Ok, danke.

          Hier der HTML-Code (der sich eigentlich in einer PHP-Datei befindet, aber ich hoffe, dass ist nebensächlich...):

            
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
          <html xmlns="http://www.w3.org/1999/xhtml">  
          <head>  
          <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>  
          <title>Titel</title>  
          <link rel="stylesheet" type="text/css" href="test.css" />  
          <script type="text/javascript" src="test.js"></script>  
          </head>  
          <body>  
          <form action="../Speichern/index.php" method="POST">  
          <fieldset>  
          <div style="float: left">  
            <div style="float: left; width: 5em;">  
              <table>  
                <tr>  
                  <td>  
                    <input type="button" value="test" onclick="test()">  
                  </td>  
                </tr>  
              </table>  
            </div>  
          </div>  
          </fieldset>  
          <input type="Submit" value="Speichern" />  
          </form>  
          </body>  
          </html>  
          
          

          Hier ist der Javascript-Code, ich hab die Funktion jetzt ausgelagert in die test.js.

            
          function test()  
          {  
            alert("test");  
          }  
          
          

          Nochmal der Fehler: Wenn man auf den Button innerhalb des Formulars klickt, wird die Funktion test() nicht aufgerufen und ich würde gerne wissen, wieso.

          1. [latex]Mae  govannen![/latex]

            Hier der HTML-Code (der sich eigentlich in einer PHP-Datei befindet, aber ich hoffe, dass ist nebensächlich...):

            Nochmal der Fehler: Wenn man auf den Button innerhalb des Formulars klickt, wird die Funktion test() nicht aufgerufen und ich würde gerne wissen, wieso.

            Weil bei _dir_ irgendwas nicht stimmt.

            Dieser Code funktioniert mit Opera 12, Firefox 16 + 17, Chrome 23, IE 7 + 8 und Safari 5.05 einwandfrei.

            .

            Stur lächeln und winken, Männer!
            Kai

            --
            „Die Borg würden nicht mal Spaß verstehen, wenn sie einen Vergnügungspark assimiliert hätten!” (B'Elanna Torres)
            SelfHTML-Forum-Stylesheet
            1. Das was ich nicht verstehe ist ja nur, dass es bei mir auch funktioniert! Aber eben nur, wenn der Button außerhalb des Formulars definiert wird...
              Na ja, dann hab ich wohl Pech gehabt...

            2. Und nochwas: Wenn ich das Javascript direkt angebe, z.B. so:

                
              <input type="button" value="test" onclick="this.form.wert.value++">  
              
              

              dann gehts! Und zwar natürlich innerhalb des Formulars...

              P.S.: Unterschiedliche Browser (IE, Firefox, Opera) haben bei mir denselben Effekt, es liegt also nicht daran...