Steel: Event übergeben

Beitrag lesen

Moin!

ich möchte in js das Event von einem Element an ein anderes übergeben und erweitern.

So siehts aus:

<input type="text" name="text1" onblur="mach_1()"/>
<input type="text" name="text2" onblur="mach_2()"/>


>   
>   
> Mit javascript will ich nun, dass bei "onblur" von text2 zuerst mach\_2() und dann mach\_1() ausgeführt wird.  
  
aeh... Wenn mach1() ausgefuehrt werden soll und nicht "was bei text1 ausgefuehrt wird" dann doch einfach  
  
~~~javascript
  
document.getElementsByName('text2')[0].onblur = function()  
{  
 mach_2();  
 mach_1();  
}  

Oder, auf deine Art notiert:
<input type="text" name="text2" onblur="mach_2(); mach_1()"/>
Davon wuerde ich aber absehen. JS hat im HTML nicht viel verloren.

Falls das ganze dynamisch sein soll also mach_2() und "das was bei text1 gemacht wird, was immer das ist" musst Du natuerlich feststellen, was bei text1 so gemacht wird.

Das hier hab ich mal gebastelt. Kannst ja mal mit rumspielen:

  
// injects code into function code  
// returns new code with injection  
// nc new code, eh eventhandler/function (old code)  
function injectCode(nc, eh)  
{  
  
 // check if eventhandler or function exists  
 //alert(typeof eh);  
 if (!eh)  
 {  
  eh = function(){}  
 }  
  
  
 //alert("new code: " + nc);  
 //alert("function code: " + eh);  
  
 // get code out of eventhandler or function  
  
 // read function in eventhandler  
 var fc = eh.toString();  
  
 // get code out of function  
 var fBeg = fc.indexOf("{")+1;  
 var fEnd = fc.lastIndexOf("}");  
 var actCode = fc.slice(fBeg, fEnd);  
  
 //alert("actual code: " + actCode);  
  
 // add new code after old code  
 actCode = actCode + nc;  
  
 //alert("modified code: " + actCode);  
  
 return actCode;  
}  

Beispiel einer Integration:

  
var myElement=document.getElementsByName('text2')[0];  
myElement.onblur = function()  
{  
 alert('blur');  
}  
myElement.onblur = new Function(injectCode("alert('neuer code');", myElement.onblur));
--
Vergesst Chuck Norris.
Sponge Bob kann unter Wasser grillen!