Formularobjekt an Funktion übergeben
Raucherkrebs
- javascript
Hallo Forum,
Es wird ein Formular an folgende Funktion übergeben:
function CheckJobApplication(form) {
if (this.elements["bereich"].value == "") {
alert("Bitte tragen Sie den gewünschten Bereich ein !");
this.elements["bereich"].focus();
return false;
}
...
}
<form action="shoppingcard.php" method="post" onsubmit="return ZahlChecker(this);">
Wie muss ich this dann in der Funktion ansprechen ? So wie oben ?
Hi,
elements erwartet die Nummer des Elements, beginnend ab 0.
Du kannst aber das Element auch über den Namen des Formularfeldes ansprechen. Siehe http://de.selfhtml.org/javascript/objekte/elements.htm.
freundliche Grüße
Ingo
Hallo Ingo,
komischerweise wird meine Funktion überhaupt nicht ausgeführt.
function checkJobApplication(form) {
if (form.bereich.value == "") {
alert("Bitte tragen Sie den gewünschten Bereich ein !");
form.bereich.focus();
return false;
}
So eingebunden:
<script src="../javascripts/application.js" type="text/javascript"></script>
Dann so aufgerufen:
<form id="bewerbung" action="career.php" method="post" onsubmit="checkJobApplication()">
Ist das hier die ofizielle Javasript Seite ?
http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/
Hallo.
komischerweise wird meine Funktion überhaupt nicht ausgeführt.
Kann ja auch nicht, da du sie ohne Parameter aufrufst:
<form ... onsubmit="checkJobApplication()">
Ist das hier die ofizielle Javasript Seite ?
http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/
Nein, die offizielle (so sie es denn war) ist nicht mehr existent. Aber warum liest du nicht in Selfhtml nach?
Freundschaft!
Siechfred
Das mit der Objektübergabe hatte ich vorhin erst geändert und das this vergessen. Mit "this" geht es aber auch nicht.
<form id="bewerbung" action="career.php" method="post" onsubmit="checkJobApplication(this)">
Nein, die offizielle (so sie es denn war) ist nicht mehr existent. Aber warum liest du nicht in Selfhtml nach?
Weil ich gerne zu jeder Sprache eine offizielle Referenz hätte.
Es kann doch nicht sein, dass es zu Javasript keine offizielle Seite gibt.
Nun komme ich in die Funktion hinein, aber nicht in die ifs.
Es wird nie ein FALSE zurückgegeben und das Formular immer abgeschickt.
Ich gebe auf. Habe nun mehrere Stunden rumprobiert.
Warum klappt es nicht. Weiß wirklich niemand warum ? :(
Hi,
Es wird nie ein FALSE zurückgegeben und das Formular immer abgeschickt.
das false wird sicherlich auch zurückgegeben, aber Du fragst im Aufruf ja gar kein return ab.
freundliche Grüße
Ingo
<form id="bewerbung" action="career.php" method="post" onsubmit="checkJobApplication(this)">
Nein, die offizielle (so sie es denn war) ist nicht mehr existent. Aber warum liest du nicht in Selfhtml nach?
Weil ich gerne zu jeder Sprache eine offizielle Referenz hätte.
Es kann doch nicht sein, dass es zu Javasript keine offizielle Seite gibt.
Das, was du dir wahrscheinlich unter »JavaScript« vorstellst, gibt es gar nicht. Daher gibt es auch keine offizielle Seite, die JavaScript normativ behandelt. Einiges hat Netscape definiert und die anderen Hersteller haben es übernommen. Die Grundlagen sind durch ECMAScript und unzählige Teiltechniken durch das W3C-DOM standardisiert. Dann gibt es natürlich noch unzählige Abweichungen, Alternativumsetzungen und Zusatztechniken von diversen Browserherstellern.
Mathias
Ich setz mal hier an:
function CheckJobApplication(form) {
Wie immer, wenn was nciht klappt, stellt sich die Frage ob es nicht sinvoll wäre die gewünschten Objekte zu testen?
z.b.
if(!form) return alert('kein Formular');
if (this.elements["bereich"].value == "") {
this ist in diesem Falle window und window hat keine elements du meinst form
if(!form.elements['bereich']) return alert('Das falsche Formular?');
if(!form.elements['bereich'].value)
{
alert("Bitte tragen Sie den gewünschten Bereich ein !");
this.elements["bereich"].focus();
form.elements['bereich'].focus();
return false;
}
...
}<form action="shoppingcard.php" method="post" onsubmit="return ZahlChecker(this);">
ZahlChecker?
Struppi.
OK, ich habe es getestet. Es gibt kein Objekt "form". Aber wie denn nun ?
function checkJobApplication(form) {
if (!this.form.position.value ) {
alert("Bitte tragen Sie den gewünschten Bereich ein !");
form.position.focus();
return false;
...
}
Und Aufruf:
<form id="bewerbung" action="career.php" method="post" onsubmit="return checkJobApplication(this.form)">
Es klappt einfach nicht.
Bitte - wie lautet es richtig?
OK, ich habe es getestet. Es gibt kein Objekt "form". Aber wie denn nun ?
Wo hast du das getestet?
function checkJobApplication(form) {
if (!this.form.position.value ) {
Du hast mein Antwort nicht gelesen :-(
this ist hier gleich window
<form id="bewerbung" action="career.php" method="post" onsubmit="return checkJobApplication(this.form)">
und warum du auf einmal hier ein this.form machst ist mir ein Rätsel.
this zeigt immer auf den aktuellen Kontext. Innerhalb des <script> Block ist this das Fenster innnerhalb eines HTML Tags ist es das Tag.
Struppi.
Wo hast du das getestet?
Genau so wie du es gesagt hast. In der Funktion direkt am Anfang.
Mittlerweile sieht es so aus. Und es haut nicht hin:#
function checkJobApplication(application) {
if (application.position.value == "") ) {
alert("Bitte geben sie die Position ein !");
application.position.focus();
return false;
} else if (application.name_l.value == "") {
...
}
<form action="career.php" method="post" onsubmit="return checkJobApplication(this)">
<table>
<tr>
<td>Position:<span class="required">*</span></td>
<td><input type="text" name="position" size="35" /></td>
Mittlerweile sieht es so aus. Und es haut nicht hin:#
haut nicht hin, ist natürlich keine Sinnvolle Fehlerbeschreibung.
function checkJobApplication(application) {
Da der code nicht falsch aussieht und du auch nicht davon gesprochen hast, das du einen Fehler in der JS Konsole gefunden hast. Bleibt dir nur der weg des schrittweisen testen:
if(!application) return alert('Kein Formular');
if(!application.position) return alert('Das Element position gibt es nicht');
if (application.position.value == "") ) {
Hier ist ein Fehler (der wahrscheinlich auch in der JS Konsole steht und es reicht auch: if (!application.position.value) {...
Struppi.
Hallo,
der Code sieht mittlerweile so aus:
function applicationCheckP1(form) {
return (checkPosition(form) &&
checkName(form) &&
checkAddress(form) &&
checkPhoneNumber(form) &&
checkEmail(form));
}
function checkPosition(form) {
if (!form.position.value) {
alert("Bitte tragen Sie den gewünschten Bereich ein !");
form.position.focus();
return false;
} else {
return true;
}
}
function checkName(form) {
if (!form.name_l.value) {
alert("Bitte geben Sie Ihren Nachnamen ein !");
form.name_l.focus();
return false;
} else if (!form.name_f.value) {
alert("Bitte geben Sie Ihren Vornamen ein !");
form.name_f.focus();
return false;
} else {
return true;
}
}
...
In der Konsole kommt keine Fehlermeldung, aber das Formular wird in jedem Fall abgeschickt. Warum nur?
In der Konsole kommt keine Fehlermeldung, aber das Formular wird in jedem Fall abgeschickt. Warum nur?
Weil du dem Handler einen Rückgabewert mitteilen musst:
onsubmit = "return Funktion();"
Wenn Funktion false zurückgibt wird das Formular nicht abgeschickt, gibt die Funktion true zurück dann schon.
Struppi.