• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Eigene Funktion Aufrufen im Formular "OnSubmit"

herrschrödinger

Neues Mitglied
Nabend Zusammen,

Ich habe jetzt seit einigen Stunden folgendes Problem, dass einfach nicht gelöst werden möchte:Ich habe ein fertiges JS Plugin runtergeladen und in meine HTML Datei eingebunden, undzwar wie folgt:

HTML:
 <!--Growl Imports-->
  <script type="text/javascript" src="humane/humane.min.js"></script>
  <link rel="stylesheet" type="text/css" href="humane/themes/libnotify.css" />

Anschließend kann ich mit einem entsprechendem <script>-Tag und einem Funktionsaufruf wie:
PHP:
humane.log("Welcome Back")
... das Plugin nutzen. So weit so gut :)

Das eigentliche Problem entsteht, wenn ich diese Funktion aufrufen möchte im Zusammenhang mit einem OnSubmit in Formularen, denn sobald ich im OnSubmit eine eigene, wie obige, Funktion aufrufen möchte funktioniert dass nicht mehr. Es werden nur Standard-Funktionen akzeptiert wie alert ...
Mein Ansatz dabei sah wie folgt aus:

HTML:
<html>
      <head>
             <!--Growl Imports-->
                 <script type="text/javascript" src="humane.min.js"></script>
                 <link rel="stylesheet" type="text/css" href="themes/libnotify.css" />
      </head>
<body>

<script >
    function myfunction(){
            humane.log("Welcome Back");
            }
</script>

<form  action="compose.php" method="post" onsubmit="myfunction();"> 
....
</body>
</html>

So tut sich einfach nichts. Wenn ich diese Funktion außerhalb des OnSubmit nutze funktioniert es. Genauso wie wenn ich statt dem humane.log() einfach alert() verwende, dann funktioniert es auch ... aber so tut sich leider nichts und ich kann nicht nachvollziehen wieso.

Ich wollte folgendes Erreichen:

Wenn das Formular abgeschicht wird, soll eine Growl-Benachrichtigung mit meinem Text darin erscheinen, was eigentlich mit OnSubmit doch kein Problem darstellen sollte oder ?

Bin dankbar für jede Hilfe, vG Herr Schrödinger
 
Deine Funktion wird zwar ausgeführt, aber da sie den Versand des Formulars nicht verhindert, kann man den Erfolg nicht sehen. Du müsstest den Versand verhindern indem Du einen false-Wert ans onsubmit übergibst.

Code:
function myfunction(){
            humane.log("Welcome Back");
return false;
            }

HTML:
<form  action="compose.php" method="post" onsubmit="return myfunction();">

Dadurch wird das Formular natürlich nicht abgeschickt. Das müsstest Du nun über die JavaScript-Funktion oder nach der Anzeige deines Hinweistextes per JavaScript initiieren (Stichwort: onsubmit()).

Moderation: Verschoben von HTML zu JavaScript-
 
Code:
$('form').on('submit', function(event) {
  event.preventDefault();
  myfunction();
  ..... // tu was mit den Daten in POST
})
 
Deine Funktion wird zwar ausgeführt, aber da sie den Versand des Formulars nicht verhindert, kann man den Erfolg nicht sehen. Du müsstest den Versand verhindern indem Du einen false-Wert ans onsubmit übergibst.

Code:
function myfunction(){
            humane.log("Welcome Back");
return false;
            }

HTML:
<form  action="compose.php" method="post" onsubmit="return myfunction();">

Dadurch wird das Formular natürlich nicht abgeschickt. Das müsstest Du nun über die JavaScript-Funktion oder nach der Anzeige deines Hinweistextes per JavaScript initiieren (Stichwort: onsubmit()).

Moderation: Verschoben von HTML zu JavaScript-


Hi Danke für die Antwort. Also teilweise hat es so funktioniert ich beschreibe dir mal wo jetzt das Problem liegt.

Mein Button zum Senden ist immer noch vom Typ "Submit" dadurch kann ich im Formular-Kopf auch sagen "OnSubmit" wie du bereits beschrieben hast.

HTML:
<input type="submit" value="Send"></input>

Über genau dieses OnSubmit wird dann meine Funktion aufgerufen und die Growl erscheint auch wunderbar. Wie du auch bereits sagtest wird dadurch jetzt aber auch das Formular nicht mehr abgeschickt, was ich per JS nachholen muss. So weit so gut.

HTML:
<form  action="compose.php" method="post" name="emailform" onsubmit="return messageSent();">

Dann hab ich eine JS Funktion geschrieben, die das Formular abschickt, damit alles wieder wie gewohnt funktioniert:

PHP:
function sendForm () {
  document.emailform.submit();
}

Sobald ich das mache funktioniert wieder nichts wie gewollt und SELFHTML sagt dazu :

Beachten Sie:
Der Aufruf der Methode submit() funktioniert nicht mehr, wenn es im Formular ein Element (z.B. einen Absende-Button) gibt, welches ebenfalls den Namen submit besitzt.

Wenn ich jetzt aber aus dem Submit-Button einen ganz normalen Button mache funktioniert auch die Growl nicht mehr richtig ...
 
Ich kenne Growl nicht. Wie startest Du das? Und an welcher Stelle genau soll es starten? Vor oder nach dem Abschicken des Formulars.
 
Zurück
Oben