Bei Formular-Absenden Seite nicht neu laden

Sebbo

Well-known member
ID: 7919
L
24 Mai 2007
185
14
Hallo Leute

Bin grade am Verzweifeln. Ich habe eine AJAX-Anwendung, die fast komplett funktioniert. Ich habe nur zwei Probleme. Ein kleine und ein großes.

Das große Problem:
Ich habe ein Formular, welches die Benutzereingaben entgegennimmt. Wenn ich das Absende, dann darf die Seite aber nicht neu geladen werden (wegen Ajax). Das ganze funktioniert eigentlich richtig, solange ich keinen Firefox unter Windows nehme. Da wird immer die komplette Seite neu geladen.

HTML:
<form name="form1" method="post" onsubmit="checkInput(form1.farbe.value, form1.text.value); return false;">
<input type="hidden" name="farbe" value="1">
 Text: 
<input type="text" name="text" size="70" maxlenght="100" id="text"> 
<input type="button" value="Los" id="textfett" onClick="checkInput(form1.farbe.value, form1.text.value); return false;">
</form>

Wie gesagt. IE unter Windws funktioniert das. Firefox unter Linux auch.
Aber Firefox unter Windows lädt immer die komplette Seite neu.

Das kleine Probleme hat mit der Anzeige zu tun. Ich bekomme es nicht hin, dass IE die Farbe anzeigt. Das geht diesmal im Firefox unter Windows und Linux.
HTML:
	neuSpan.setAttribute('style', 'color:#'+messages[i].getElementsByTagName('farbe')[0].firstChild.nodeValue+';')
Das ist der JavaScript-Code. Die node-Value enthält den Hex-Farbwert.
 
Zum ersten:

Kann sein, dass Firefox nicht vernünftig mit dem return false am Ende klar kommt. Entweder DOM-Level 2 Event Listener verwenden oder die Funktion direkt das false zurückgeben lassen und somit innerhalb des onsubmit nur eine Funktion stehen haben.

Zum zweiten:

Fies. firstChild ist vermutlich kein Textknoten sondern Whitespace. Musst Du vorher prüfen. Kommt der Wert aus 'nem AJAX-Request? Wäre es da nicht eventuell sinnvoller, JSON zu nutzen?

Allgemein:

Dir würde ein Framework wie Prototype immes weiterhelfen.
 
Zum ersten Problem: Das werde ich mir mal ansehen.

Zum zweiten Problem:
Ich hab schon mal was von JSON gehört. Allerdings ist das meine erste AJAX-Seite überhaupt. Und ich hatte ein fertiges Script, welches XML nutzt. Dies hab ich für meine Erfordernisse angepaßt und erweitert.
Deswegen habe ich auch kein Framework genutzt.

Und ich habs selber hinbekommen:
HTML:
neuSpan.style.color= '#'+messages[i].getElementsByTagName('farbe')[0].firstChild.nodeValue;
Das funktioniert in allen 3 Browsern.

Jetzt muss ich nur noch das erste Problem lösen.
 
Zum ersten: Problem kenn ich, keine Llsung gefunden, aber net groß gesucht

Zum zweiten: Der IE hat ein anderes Elememt für den aktuellen Style, d.h. wenn du den ändern wilslt, musst du auf element.currentStyle zugreifen (o.ä.), würd da mal was googlen. Neue Eintragungen in das .style attribut oder als Attribut-Knoten 'style' berücksichtigen nur die Browser != IE