Seltsamer Bug bei Formularüberprüfung unter Linux

SilentWarrior

Erfahrenes Mitglied
’nabend

Ich hab mir mal einen JavaScript-Form-Checker gebastelt, zu bestaunen unter http://silentwarrior.si.funpic.de/index.php?page=comments&news=18. Er ist noch nicht fertig, aber nunja, das Wichtigste hab ich. Wenn ein Feld nicht ausgefüllt ist, kommt eine Fehlermeldung unterhalb des entsprechenden Feldes. Jetzt gibt es da nur ein sehr merkwürdiges Problem: Unter Linux befindet sich innerhalb dieses Hinweistextes ein input-Feld – und zwar über dem eigentlichen Text. (Siehe Anhang.) Wie das dahinkommt und wie man es da wieder wegbringt – keine Ahnung. Das Komische ist auch, dass es wirklich an Linux liegen muss, weil mit FF unter Windows funktioniert es problemlos.

Hier mal der Quelltext der Überprüfung (mag sein, dass er etwas umständlich ist, aber er funktioniert, und das ist die Hauptsache):
HTML:
function checkForm(arg) {

	var texts = new Array("Du hast vergessen, einen Namen anzugeben.", "Du hast eine ungültige E-Mail-Adresse angegeben.", "Bitte gib eine gültige oder gar keine URL an.");

	var j, k;

	for (var i=0;i<=2;i++) {
		j = 2*i;
		k = j + 1;
		if (document.getElementsByTagName("form")[0].getElementsByTagName("p")[j].getElementsByTagName("input")[0].value === "") {
			textnode = document.createTextNode(texts[i]);
			if (!document.getElementsByTagName("form")[0].getElementsByTagName("p")[k].getElementsByTagName("strong")[0].hasChildNodes()) {
				document.getElementsByTagName("form")[0].getElementsByTagName("p")[k].getElementsByTagName("strong")[0].appendChild(textnode);
			}
		} else {
			if (document.getElementsByTagName("form")[0].getElementsByTagName("p")[k].getElementsByTagName("strong")[0].hasChildNodes()) {
				child = document.getElementsByTagName("form")[0].getElementsByTagName("p")[k].getElementsByTagName("strong")[0].firstChild;
				document.getElementsByTagName("form")[0].getElementsByTagName("p")[k].getElementsByTagName("strong")[0].removeChild(child);
			}
		}
	}

	return false;

}
Mir ist durchaus bewusst, dass die Funktion noch nicht das tut, was sie soll (sie gibt unabhängig von den Formularwerten stets false zurück). Aber es geht mir jetzt auch primär erstmal um diesen seltsamen Anzeigefehler unter Linux.

Hier noch der Code des Formulars:
HTML:
<form action="index.php?page=comments&amp;news=18" method="post" onsubmit="return checkForm()">

<p><label for="name">Name:</label><input type="text" name="name" id="name" /></p>
<p><strong class="warning"></strong></p>
<p><label for="mail">E-Mail-Adresse:</label><input type="text" name="mail" id="mail" /></p>
<p><strong class="warning"></strong></p>
<p><label for="website">Website:</label><input type="text" name="website" id="website" /></p>
<p><strong class="warning"></strong></p>
<p><label for="comment">Kommentar:</label></p>
<p><strong class="warning"></strong></p>
<p><textarea rows="6" cols="35" name="comment" id="comment"></textarea></p>
<p><button id="submit" name="submit" type="submit" value="sent">Kommentar abgeben</button></p>
</form>
Weiss irgendjemand einen Rat? Ist dieser Bug bekannt? Kann man etwas dagegen tun? Hab ich einen Fehler in meinem Code? Bin für Hinweise und Ratschläge dankbar!

MfG

SilentWarrior
 

Anhänge

  • form.gif
    form.gif
    4,9 KB · Aufrufe: 50
Macht das nur der FF unter Linux oder auch andere Browser?
Also wenn's der FF macht wird's wohl auch der Mozi machen, ist ja der gleiche Code.
Schonmal mit Opera fuer Linux getestet? Was ist mit Konqueror und Galeon?
 
Also ich hab's jetzt mal getestet. Unter FF, Epiphany und Galeon macht der überall den gleichen Mist. Noch stranger aber Konqueror: Dort erscheint kein input-Feld über dem Text, stattdessen verschwinden aber die input-Felder für Mail und URL.

Liegt das an mangelndem DOM-Support oder bin ich wirklich dermassen unfähig? *confused*
 
Ich hab leider erst am Samstag die Moeglichkeit selbst mal zu testen, da ich erst wieder am Wochenende zuhause bin. Aber ich werd's mir dann mal ansehen wenn Du's bis dahin noch nicht geloest hast.

Inwieweit die Linux-Browser DOM unterstuetzen kann ich Dir absolut nicht sagen, da ich auf JavaScript in der Regel verzichte. Aber ich werd mal gucken.
 
Bei mir sieht das ganz normal aus(Mozilla + Konqueror) ....ist zwar keine grosse Hilfe, aber mehr kann ich da leider nicht sagen, wenn ich den fehler nicht live erlebe:(
 
Hi Sven

Hm … könnte es sein, dass das distributionsabhängig ist? Wäre ja schon sehr seltsam. Ich hab’s nämlich aufm Laptop und auch zuhause ausprobiert, bei beiden der gleiche Fehler. Hab bei beiden Debian drauf.

:confused:
 
Mmmh...wenn ich ehrlich sein soll: keine Ahnung.
Ich hab von Linux keinen Schimmer...hab hier nur ne Knoppix-CD rumliegen, und mit der gehts problemlos.

Ich kanns mir aber eigentlich nicht vorstellen, dass das am OS liegt.
Bist du sicher, dass es genau dieser Code ist, den du da testest?

Ist da noch CSS dabei, welches du uns bisher vorenthältst?
 
Zack, voll ins Schwarze getroffen!

An der CSS-Datei lag's in der Tat - hätte ich nicht für möglich gehalten. Ich hab die input-Felder absolut positioniert, keine so gute Idee, wie sich nachträglich herausgestellt hat. Jetzt funktioniert alles wunderbar und ich kann weiterbasteln.

Vielen Dank! :)
 

Neue Beiträge

Zurück