steckl: onsubmit mit zwei Funktionen

Beitrag lesen

Hi,

Hi,

Du kannst dir eine neue Funktion definieren, die dann die beiden anderen Funktionen aufruft. Diese kannst du dann mit onsubmit=" return neueFunktion()" aufrufen.
Und wie "verbinde" ich zwei Funktionen in einer?

function pr1()
{
alert(1);
}

function pr2()
{
alert(2)
}

function ueberPr()
{
pr1();
pr2();
}

Wenn du jetzt ueberPr() aufrufst werden pr1() und pr2() aufgerufen.

Wobei du die Funktion mit location.href eh vermeiden solltest und lieber den return-Wert auswerten.

Das sieht dann so aus (Pseudocode):
Kommt die Funktion in den <head>, oder?

Ja, zum Beispiel.

function checkFunktion()
{
  if(allesKorrekt)
Was muss ich da statt "allesKorrekt" schreiben?

In deinem Fall die Funktion, die Prüft ob die Eingabe richtig war. also: if(chkFormular())
Diese Bedingung ist dann erfüllt, wenn chkFormular() true zurück gibt.

{
    return true;
  }
  else
  {
    ausgabe was falsch ist (am einfachsten mit alert('fehler bei ...')
also z.B. "alert("Bitte geben Sie eine Zahl an!")", oder?

Ja

return false;
  }
}

Wenn du das dann mit onsubmit="return checkFunktion()" aufrufst wird das Formular nur abgeschickt, wenn true zurückgegeben wurde.
Aber mein Formular sendet die Daten ja durch die oben stehende uebergabe()-Funktion. Wie geht das dann in dieser Methode?
Nochmal zur Erklärung: Das Formular soll nur das Alter (das nur eine Zahl sein darf) auf die nächste Seite (jahr2) im gleichen Frame weitergeben, mehr nicht.

Deine Methode sendet den Wert an den Eltern-Frame, nicht aber an die Seite die anschließend aufgerufen wird.
Wenn du das Formular ganz normal senden lässt (ohne davor location.href zu ändern) sendet es alle Formularwerte an die Seite, die du bei action angegeben hast.
Folgendes sendet den Wert von alter an jahr2.html, wenn checkFunction() true zurück-gibt und die aktuelle Seite nicht verändert:

<form action="jahr2.html" onsubmit="return checkFunktion()">
<input type="text" name="alter">
</form>

PS: Was mir noch gerade eingefallen ist: Die User dürfen auch keine "0" an erster Stelle haben (also z.B. nicht 025). Kann ich das auch mit JavaScript kontrollieren?

Du könntest mit isNaN() überprüfen, ob es sich um eine Zahl handelt und dann mit parseInt die Zahl in eine Ganzzahl umwandeln. Wenn der User dann 012.25 eingibt wird das dann in 12 umgewandelt.

mfG,
steckl