---
title: "Bevara onchange och lägga till mer?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/158444-bevara-onchange-och-lägga-till-mer"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "jabbalizer"
published: "2007-03-21T13:12:31.000Z"
updated: "2007-03-23T07:29:22.000Z"
replies: 5
views: 337
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/158444-bevara-onchange-och-lägga-till-mer"
---

# Bevara onchange och lägga till mer?

## #1 — jabbalizer, 2007-03-21T13:12Z

Jag har ett script med en funktion som körs onload i \<body\>.
Denna funktion använder document.getElementsByTagName('INPUT') för att ta fram alla \<input\>.

I vissa fall lägger den till xxxx.onchange = function(){someFunction(this);};

**Nu till frågan:**
Hur bär jag mig åt för att inte skriva över en eventuell onchange="någonjavascriptfunktion();" som angetts direkt i html?
Jag vill alltså köra min funktion först, och sen även köra det som eventuellt angetts direkt i koden.

Har googlat en del men inte hittat vad jag söker.. Länkar någon?

Permalänk: https://www.webforum.nu/p/158444

## #2 — jabbalizer, 2007-03-21T14:22Z

En teori..

Detta fungerar i FF (men är kanske inte så vackert). IE7 däremot tycker inte att eval returnerar ett giltigt värde.

Någon som vet hur man kan göra om en textsträng till "function" igen i IE?

```
var oldEvent = "";
if(coll[i].onchange != null){
    var str = coll[i].onchange.toString();
    oldEvent = str.substring(str.indexOf('{')+1,str.lastIndexOf('}')-1);
}
coll[i].onchange=eval("function(){ValidateText(this);"+oldEvent+"};");
```

Permalänk: https://www.webforum.nu/p/1949939

## #3 — spango, 2007-03-21T15:04Z

eval är ondska i nio fall av tio, och en gråzon i de resterande fallen. Otestad variant:

```
coll[i].__old_onchange = coll[i].onchange;
coll[i].onchange = function () {
    doThatFunkyStuff();
    if (this.__old_onchange) return this.__old_onchange.apply(this, arguments);
    else return true;
}
```

Permalänk: https://www.webforum.nu/p/1949954

## #4 — jabbalizer, 2007-03-22T09:57Z

Verkar vara precis vad jag är ute efter :)
Tackar!

Permalänk: https://www.webforum.nu/p/1950144

## #5 — Erik Juhlin, 2007-03-22T19:06Z

Eller ännu bättre. :p

```
if (coll[i].addEventListener)
	coll[i].addEventListener("change", doThatFunkyStuff, false);
else if (coll[i].attachEvent)
	coll[i].attachEvent("onchange", doThatFunkyStuff);
```

Permalänk: https://www.webforum.nu/p/1950299

## #6 — spango, 2007-03-23T07:29Z

Den varianten är lätt snyggare, men det beror på hur neolitkompatibel man vill vara :) Finns iofs kanske ingen anledning att bry sig om typ NS4 längre...

Permalänk: https://www.webforum.nu/p/1950397

---

Tråden på webben: https://www.webforum.nu/amne/javascript/158444-bevara-onchange-och-lägga-till-mer
