Webstatt.org - Community seit 2006 - 2012 (2024?)

onSubmit Event Problem

Avatar user-253
18.10.2006 10: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'zwinkern;"...
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.

Avatar user-300
18.10.2006 19: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 lächeln

Avatar user-253
19.10.2006 07: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 traurig

Viele Grüße,
Michael