Harlequin: Event-Handler

Beitrag lesen

Yerf!

ich arbeite gerade an komplexen Controls für eine Intranetapplikation. Mein aktuelles Problem ist die Implementierung von JS-Eventhandlern für diese Controls, und zwar so, dass sie nur für das Control als ganzes und nicht für Einzelkomponenten wirken.

Meine Idee war, diese Handler am Umgebenden DIV des Controls zu definieren und bei Bedarf händisch auszulösen.

  
<div id="from_row_0_AmPm" OnClick="alert('click')" OnFocus="alert('focus')" OnBlur="alert('blur')" OnChange="alert('change')" style="width:40px;">  

Im JavaScript:

  
    var box = getElement(boxID); //macht eine getElementById  
    var control = box.parentNode; //dies ist das DIV  
//sonstige Verarbeitung, die change bei Bedarf auf true setzt  
    if (change && (typeof control.onchange) == 'function')  
        control.onchange();  

Funktioniert im Firefox und Opera einwandfrei, nur der IE stellt sich Quer. Dort funktioniert zwar OnClick, OnFocus und OnBlur, aber nich OnChange. Im Debugger (VisualStudio) behauptet er, control.onchange wäre 'undefined'.

2. Versuch, da vielleicht das Attribut ignoriert wird (da eigentlich ungültig):

  
<script type="text/javascript">  
ctrl = document.getElementById('from_row_0_AmPm');  
if(ctrl != null && typeof ctrl.onchange == 'undefined')  
 ctrl.onchange = new Function("alert('test');");  
</script>  

Aber auch so bleibt onchange undefined. Ist dieses Problem bekannt? Gibt es eine Lösung (zumindest für IE6, ältere Versionen sind egal)? Oder hab ich etwas falsch gemacht...

Gruß,

Harlequin