Hallo!
Das onchange-Event funktioniert ohnehin nur mit JavaScript - also kannst Du auch JavaScript verwenden, um es ggf. auf die Formularelemente zu verteilen, etwa so:
if (document.all && !window.opera) {
for (var f in document.forms) {
for (var e in f.elements) {
e.onchange = function(f) { return function() { f.onchange(); }}(f);
}
}
}
Ich hab das mal umgesetzt (inkl. den Hinweisen von Mathias)
~~~html
<form onchange="alert(this.name)" name="formular">
<input type="text" name="a" >
<input type="text" name="b" >
</form>
<script type="text/javascript">
if (document.all && !window.opera) {
for (var i = 0;i <document.forms.length; i++) {
var f = document.forms[i];
for (var j = 0; j < f.elements.length;j++) {
var e = f.elements[j];
e.onchange = function() { eval( f.onchange);};
}
}
}
</script>
onchange läßt sich leider nicht direkt aufrufen, da es der IE als String sieht (eine Möglichkeit rauszufinden ob der Browser onchange im unterstützt). Schlecht ist, das this in dem Fall das Element ist.
Das läßt sich umgehen:
var func = f.onchange.replace(/\bthis\b/g, '_this');
e.onchange = function() { eval("var _this = this.form; " + func + "");};
Ich weiß aber nicht, ob das nicht des guten zuviel ist.
Struppi.