Willkommen in der Webstatt Zum Webstatt Blog und Stories
Michael Michael am 18.10.06 12:01

Servus,

ich arbeite gerade an einer Formvalidierung und stehe gerade etwas auf dem Schlauch. Kurz zusammengefasst geht es darum, dass ich in dem Script dynamisch die bei onsubmit aufzurufende Funktion hinzufügen will damit ich nicht per Hand obSubmit="return ..." ergänzen muss.

Mein Problem ist das return. Ich kann die Funktion hinzufügen (den Code poste ich gleich). Aber ohne das return wird der Rückgabewert vom Formular ignoriert:

...
_initForm:function(form) {
if(form.className.match(/_formvalidator/)) {
formvalidatorUtils.addEvent(form,'submit',formvalidator.check,false);
}
return true;
},
...



Und noch den Teil zum registrieren des Handlers:

formvalidatorUtils = {
addEvent:function(element,event_type,handler,priority) {
if(element.addEventListener) {
element.addEventListener(event_type,handler,priority);
return true;
} else if(element.attachEvent) {
element.attachEvent('on'+event_type,handler);
return true;
} else {
return false;
}
}
}


Als anderen Ansatz kann ich direkt die onSubmit Funktion anpassen, dann fehlen mir aber eventuell andere dort definierte Dinge. Wenn beispielsweise im Formular
<form ... onsubmit="alert('bla');"...
steht, soll das erhalten bleiben. Für das Ersetzen sieht mein Code so aus

_initForm:function(form) {
if(form.className.match(/_formvalidator/)) {
form.onsubmit = function() { if(formvalidator.check(this)) { return true; } else { return false;} };
}
return true;
},



In Hoffnung auf hilfreiche Anregungen,
Michael

// edit

Im Endeffekt soll das Script so funktionieren, dass man nur einem Formular eine Klasse gibt und automatisch alle Handler usw hinzugefügt werden.

netcup.de Warum gibt es hier Werbung?
sili sili am 18.10.06 21:14

Mein JavaScript ist nicht gerade auf dem neusten Stand, aber vielleicht hilft dir "The Ultimate getElementsByClassName".
Ich hoffe, ich hab dein Problem nicht total falsch verstanden :)

Michael Michael am 19.10.06 09:35

Servus,

Erst einmal danke für die Antwort. Leider habe ich mich etwas unklar ausgedrückt. Das Problem lieg weniger beim Auswählen der Elemente (da ich nur Formulare prüfe komme ich hier mit den herkömmlichen Methoden gut aus) sondern bei der Event Zuweisung.
In meinem ersten Versuch scheitert es bisher daran, dass die Funktion zwar hinzugefügt wird aber der Rückgabe wert dieser das Verhalten des Formulars nicht kontrolliert.
Im zweiten Ansatz liegt das Problem darin, eventuell schon woanders definierte Eventhandler beizubehalten und nicht zu überschreiben.

Ich hoffe es wurde nun klarer.
Bisher kam ich noch nicht weiter :(

Viele Grüße,
Michael

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt