Pflichtfelder

Zack

cookies vader
Funktion:
HTML:
		<!--
		function chkFormular() {
			if(document.post.name.value == "") {
				alert("Sie müssen einen Namen angeben.");
				document.post.name.focus();
		   		return false;
			}

			if(document.post.content.value == "") {
				alert("Sie müssen eine Nachricht angeben!");
				document.post.content.focus();
		   		return false;
			}

			if(document.post.captcha.value == "") {
				alert("Sie müssen den Sicherheitscode angeben!");
				document.post.captcha.focus();
		   		return false;
			}
		}
		-->

HTML:
<form method="post" action="" name="post" onSubmit="return chkFormular()">
<table width="400" border="0" cellpadding="1" cellspacing="1" summary="Gästebuch">
	<tr>
		<td>
			Name: *<br /><input type="text" value="" name="name">
		</td>
		<td>
			E-Mail-Adresse: <br /><input type="text" value="" name="mail">
		</td>
		<td>
			Homepage: <br /><input type="text" value="" name="homepage">
		</td>
	</tr>
	<tr>
		<td>
			Sicherheitscode: *
		</td>
		<td>
			<img src="capt/mccapt.php">
		</td>
		<td>
			<input type="text" value="" name="captcha">
		</td>
	</tr>
</table>
<br />
Nachricht: * <br />
<textarea name="content" cols="80" rows="15"></textarea>
<input type="submit" value="Eintrag schreiben." />
</form>

Ich möchte mit dieser Funktion überprüfen ob die Felder name, captcha und content einen Inhalt haben. Solte diese Felder keinen Inhalt haben dann soll eine Fehlermeldung erscheinen. Das funktionier soweit auch. Mit einem Problem: sobald ich auf "senden" klicke erscheint die Fehlermeldung das ich einen Inhalt(content) angeben muss obwohl diese gefüllt ist. Sobald ich aber, ohne waas zu ädern, wieder auf senden klicke funktioniert es richtig.

Warum?

Danke im Vorraus Ra7or

Ps.: Ich benutze tinymce für das Textarea.
 
Versuchs doch mal mit
document.post.captcha.value.length<1
im if.
Und natürlich mit name statt captcha bei name usw.

MFG
Mark Paspirgilis
 
Moin,

TinyMCE ist ein WYSIWYG-Editor, das, was du dort hineinschreibst, schreibst du nicht in das Textarea, sondern in ein editierbares <iframe> .
Der Inhalt dieses iFrames wird erst beim Senden des Formulares in das textarea "hinübergeschaufelt" ....deswegen schlägt die Abfrage beim 1. mal noch fehl, weil das textarea(welches man nicht sieht)....noch leer ist.

Prüfe stattdessen den Inhalt des Editor-iFrames.
 
Hi,

das wird daran liegen, dass tinyMCE Deine Textarea ausblendet und stattdessen ein Iframe in Dein Dokument setzt, in das Du dann munter tippst. Über document.post.content kommst Du dann natürlich nicht dran. Schau Dir das mal im Firebug an.

LG

EDIT: Du meine Güte, wenn man so langsam wird, sollte man ins Bett gehen... :D
 
Moin,

TinyMCE ist ein WYSIWYG-Editor, das, was du dort hineinschreibst, schreibst du nicht in das Textarea, sondern in ein editierbares <iframe> .
Der Inhalt dieses iFrames wird erst beim Senden des Formulares in das textarea "hinübergeschaufelt" ....deswegen schlägt die Abfrage beim 1. mal noch fehl, weil das textarea(welches man nicht sieht)....noch leer ist.

Prüfe stattdessen den Inhalt des Editor-iFrames.

Jetzt ist nur die Frage how? Ich seh bei dem TinyMCE nicht wirklich durch^^.
 
Also quasi so:
Javascript:
if(ed == "") {
       alert("Sie müssen eine Nachricht angeben!");
       document.post.content.focus();
       return false;
}
-> kein überprüfung D:
dann so:
Javascript:
if(inhalt == "") {
       alert("Sie müssen eine Nachricht angeben!");
       document.post.content.focus();
       return false;
}
-> selbe problem :O
 
Hi!

Hm, hast Du vorher die Variablen befüllt?
Sonst müsste es halt
Javascript:
if (tinyMCE.get('content').getContent() == "") {
    alert("Keine Nachricht");
}
lauten.
Was ich dabei nicht weiß:
+ das Textarea könnte dabei eine id (id="content") benötigen.
+ ob bereits am Anfang etwas in der Nachricht enthalten ist: tinyMCE könnte z.B. bereits ein öffnendes und schließendes Paragraph darin platziert haben -> Textarea ist nicht "leer". Den Inhalt also testhalber mal ausgeben lassen :)
-> alert(tinyMCE.get('content').getContent());

Liebe Grüße,
Mark.
 
Also ich fan ja erst gerade mit JavaScript an^^. Ich hab das jetzt so verstanden
Javascript:
		<script language="JavaScript" type="text/javascript">
		<!--
		function chkFormular() {
			alert(tinyMCE.get('content').getContent());

			if(document.post.name.value == "") {
				alert("Sie müssen einen Namen angeben.");
				document.post.name.focus();
		   		return false;
			}

			if (tinyMCE.get('content').getContent() == "") {
			    alert("Keine Nachricht");
				document.post.content.focus();
		   		return false;
			}

			if(document.post.captcha.value == "") {
				alert("Sie müssen den Sicherheitscode angeben!");
				document.post.captcha.focus();
		   		return false;
			}
		}
		-->
		</script>

richtig?

wenn ja -> dosnt work .
 
Die Prüfung ansich funktioniert bei mir, es gibt da jedoch(falls du den IE nutzt) einen anderen Fehler:
Code:
document.post.content.focus();

das Textarea kann keinen Fokus erhalten(weil es unsichtbar ist), was einen JS-Fehler verursacht, wodurch die Funktion vorzeitig abgebrochen und das Formular doch gesendet wird. Ersetze die Zeile hierdurch:
Code:
tinyMCE.get('content').focus();
 

Neue Beiträge

Zurück