• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Zwei Funktionen mit einem onclick nacheinander aufrufen

L

lazercaveman

Guest
Guten Tag,

ich habe folgendes Problem, Ich habe eine Funktion zum validieren eines einfachen Formulares geschrieben, dieses funktioniert auch völlig Problemfrei. Nun wird wenn alle Felder einen Wert vergeben haben durch die js-funktion ein true ausgegeben. nun soll beim klicken des buttons und nach durchlaufen des ersten scripts ein zweites gestartet werden, das eine animation startet.

Bisher habe ich die animation in mit dem validator in ein script geschrieben, funktioniert aber nicht so wie es soll (mann muss in dem fall den knopf zweimal drücken um die animation zu starten + mann kann das fomular nicht wieder true bekommen.

deshalb dachte ich mir es wäre am besten erst den validator durchlaufen zu lassen und nach true die animation zu starten, besteht in JS die möglichkeit soetwas umzusetzen, bzw, kann ich das über die html einbindung anweisen???

LG und Danke imm Vorraus.
 
Zuletzt bearbeitet:
Also eigentlich kannst du dir den gesamten Aufwand sparen: HTML5 ermöglicht eine direkte Formularprüfung - einfach, benutzerfreundlich und auch in Browsern mit deaktiviertem JavaScript. Außerdem führt der Browser sämtliche Prüfungen, die du umständlich mit einzelnen JavaScript-if-Zweigen machst, bei einem entsprechenden HTML5-Attribut bereits bei der Eingabe durch.
In deinem Fall wären die Stichworte "required" und "min" bzw "max":
HTML5 Attribute für Eingabefelder
input "required" - Demo
input "max" & "min" - Demo

PS: zu var $error: Ich vermute stark, du vermischt da etwas mit PHP...
 
Zuletzt bearbeitet:
Hi,

Danke für die Antwort,

bei der validierung durch html5 sind die möglichkeiten aber doch ein bischen beschränkt, oder irrre ich mich da?
Das Problem ist dennoch das die animation am ende nicht stehenbeibt, wenn ich sie nicht "false" setzte... im grunde soll das formular berechnet werden und die animation abgespielt und im endzustand stehen bleiben ohne wieder zurück zu sprichgen und ohne das man zweimal den submit button betätigen muss :/

PS: das mit den variablen habe ich mir angewöhnt (wie aus php, da lässt js einem ja spielraum) fand es anfangs übersichtlicher... :)
 
Äh und du bist dir sicher, dass die Prüfung an sich funktioniert? Das hier: if (f.elements["bmi"].value > "1 && < 20") ist ziemlicher Unsinn - würde nämlich bedeuten, dass geprüft wird, ob die Eingabe im Feld "bmi" größer als ein String ist??? :confused:
Korrekt wäre if (f.elements["bmi"].value > 1 && f.elements["bmi"].value < 20)...

bei der validierung durch html5 sind die möglichkeiten aber doch ein bischen beschränkt, oder irrre ich mich da?
Nein, für diese Anforderungen genügen sie völlig - required, um zu prüfen, ob das Feld leer ist; min/max für ein Größenlimit im Feld "bmi"; und dann gibt es sogar noch pattern für komplexe RegExp...
 
Vergessen zu Aktualisieren...

deshalb dachte ich mir es wäre am besten erst den validator durchlaufen zu lassen und nach true die animation zu starten, besteht in JS die möglichkeit soetwas umzusetzen, bzw, kann ich das über die html einbindung anweisen???
Ja, sowas kann man umsetzen. Zur HTML-Einbindung können wir nichts sagen, da wir das HTML nicht kennen...
 
@ julian: ja das funktionier... der wert ist größer als 1 und kleiner als 20... funktioniert so (habs durchgetestet)...

@kkapsner: können sie mir evtl sagen in welche richtung ich mich da schlau machen muss??? also wie setze ich sowas in js im groben um...???


LG
 
funktioniert so (habs durchgetestet)...
Das kann ich kaum glauben:
Code:
alert(10 < "1 && > 20");
können sie mir evtl sagen in welche richtung ich mich da schlau machen muss???
Um da was Genaueres sagen zu können, müssten wir das HTML sehen.

also wie setze ich sowas in js im groben um...???
Glob' rufst du die Animationsfunktion nur dann auf, wenn die Validierung true zurückliefert, aber das hast du ja schon erkannt.
 
Die Berechnung funktioniert, der Wert wird durch php ausgegeben, somit funktioniert die Berechnung auch bei ausgeschaltetem js (so zumindest die idee dahinter).
Das Problem ist halt, dass wenn js true liefert, berechnet php den Wert und jetzt müsste das script quasi nochmal durchlaufen bzw. nach der php berechnung eine zweite animation durchlaufen müsste um die animation korrekt durchführen zu können.

Also im Grunde benötige ich nur eine Möglichkeit eine funktion vor der php berechnung auszuführen und eine danach durchlaufen zu lassen und dass alles mit einem knopfdruck (einmaligem betätigen des buttons).

Danke euch und LG
 
Zuletzt bearbeitet:
PHP?
Du kannst kein JS vor PHP ausführen. Das eine ist server- und das andere clientseitig.

Aber warum brauchst du PHP um den BMI auszurechnen? Das kann man auch in JS.

Formuliere doch bitte mal klarer, was du genau erreichen willst.

PS: und das Alter braucht man nicht für den BMI.
 
Also im Grunde möchte ich über ein Formular einen Wert berechnen (dies geschieht aktuell über php und funktioniert soweit auch ganz gut).
Darüber hinaus sollmit javascript die Vollständigkeit der Felder überprüft, sowie hinweise gegeben werden welche felder fehlerhaft ausgefüllt wurden (also in diesem Fall zunächstmal leer sind).
Dann soll eine Animation ablaufen die den wert quasi nochmal optisch verdeutlicht.

Mommentan läuft es ja so:

1=> Javascript Prüft, Javascript animiert 2=> PHP berechnet

...dadurch wird eben die Animation erst nach zweitem betätigen auf den button abgespielt, weil ja php ersteinmal einen Wert an das, die animation auslösende felt schicken muss.

Richtig müsste es aber so sein:


Also: 1=> Javascript Prüft 2=> PHP berechnet 3=> Javascript animiert

Ich muss also nach durchlaufen des php scriptes lediglich eine zweite javascript funktion durchlaufen lassen, da ist nun die frage ob das machbar ist...
PHP möchte ich verwenden, da der user zwar ohne javascript den luxus der formularvalidierung und der animation nicht erhält, aber dennnoch das formular ausfüllen und einen wert erhalten kann...
Wie gesagt, es funktioniert auch wirklich alles genau wie es soll, das einzige problem ist halt wie gesagt, dass die animation erst nach erneutem betätigen des buttons startet, diese soll eben direkt nach dem berechnen der werte automatisch gestartet werden.

LG und vielen Dank :)



PS: je nach alter variiert der optimale bmi... deshalb spielt es in meinem Fall doch eine Rolle.
 
Zuletzt bearbeitet:
OK - das ist schon machbar. Du musst im PHP, wenn die BMI-Berechnung erfolgreich war, eine <script>-Node ausgeben, die dann die Funktion, die die Animation vollführt, aufruft.

PS: kann es sein, dass deine Seite für XSS anfällig ist?
PPS: der optimale BMI variiert auch von Mensch zu Mensch...
 
ahhhh okay cool, werde denn mal versuchen mich in die richtung ein bischen schlau zu machen :) -vielen herzlichen dank für die hilfe.

PS: XXS läuft doch über das suchformular nicht war? bin mir nicht ganz sicher, habe mich ehrlich gesagt noch garnicht mit der sicherheit der seite auseinandergesetzt und bin dahingehnd auch ziemlich unwissend...ich habe erst vor ca. einem halben jahr mit html und css angefangen, und bin noch ziemlich damit beschäftigt mir php und javascript anzueignen (mache das quasi parallel),

PPS: am ende ist der bmi ja sowieso ein ziemlich unzuverläsiger wert ...aber es schadet ja nicht den seinen zu kennen. :)
 
vielen herzlichen dank für die hilfe.
Bitte - gern geschehen.

XXS läuft doch über das suchformular nicht war?
Nein. XSS kann über jedes beliebige Formular laufen. Prinzipiell hast du die Gefahr immer, wenn du irgendwelche Daten vom Browser bekommst (egal über $_POST oder $_GET oder ...) und diese dann irgendwie wieder auf der Seite ausgibst.

noch garnicht mit der sicherheit der seite auseinandergesetzt
Das ist gar nicht gut, da sich Sicherheit nur mit extrem viel Aufwand "nachpflegen" lässt. Wenn man es gleich von Anfang an im Hinterkopf hat, ist es einfacher und am Ende auch sicherer.
 
den sicherheitsaspekt werde ich mir direkt mal nach dem fertigstellen des formulars bzw. inkl. animation anlesen. nun sitze ich hier schon seit der Info an der Sache und finde nix vernünftiges dazu, komme einfach nicht weiter...

gibt es denn irgendwo ein vernünftiges tutorial zu dem thema? Wenn ich nach <script>-Node suche finde ich ausschließlich infos zu node.js, :/

LG
 
Ich glaube, du denkst gerade viel zu kompliziert. Das sollte ungefähr so aussehen
PHP:
if ($bmi){
	echo "<script>startAnimation();</script>";
}
- am Besten direkt vor dem </body> einfügen.
 
Zuletzt bearbeitet von einem Moderator:
Danke vielmals nochmal, hatte das bereits veruscht, bzw. jetzt grade nochmal... funkioniert das auch wenn das javascript ausgelagert wurde in eine andere datei? irgendwie funktioniert das nicht... :S

Ich habe das doch richtig verstanden

PHP:
<?php

if (name der php variable die betroffen ist){
    echo "<script>name der js function die ausgeführt werden soll();</script>";
}  

?>

habe den snippet bereits in den body, den php code, ans ende usw. eingefügt, es tut sich einfach nichts :/
 
Du musst dir immer im Browser den Quelltext der Seite anschauen, um den Fehler zu finden. PHP Quelltext nützt da nichts. Und du musst das JS natürlich auch aufrufen.
 
okay, das js wird doch mit <script type="text/javascript" src="/testumgebung/js/bmi.js"></script> am ende aufgerufen... oder nicht?
 
Zurück
Oben