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.