---
title: "onChange"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/171333-onchange"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "haider"
published: "2008-05-08T18:30:36.000Z"
updated: "2008-05-08T19:50:07.000Z"
replies: 12
views: 711
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/171333-onchange"
---

# onChange

## #1 — haider, 2008-05-08T18:30Z

Hej!

Jag har ett scriptkommando som lyder **showdiv()"**. Vad den funktionen gör är att den visar en dold div.

Jag vill applicera en onChange på samtliga input-taggar i en sida. Måste jag lägga en onChange på alla eller kan man köra något globalt för hela sidan?

edit: strunt i denna fråga: *För övrigt, fungerar onChange så fort jag har skrivit in första bokstaven i en input eller först är jag lämnar input rutan?*
Det är **onKeyDown** som lämpar sig bäst för vad jag vill åstadkomma.

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

## #2 — voigtann1, 2008-05-08T18:34Z

onBlur när du lämnar, onChange är så fort du ändra ett tecken i ditt fält. Du kan ju göra någon "addEvent" loop för att lägga in det i varje input fält du har.

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

## #3 — haider, 2008-05-08T18:54Z

tja!

Jag har kommit fram till att om jag i slutet av scriptet skriver så här:
document.onKeyDown = showdiv
... så gör den det jag vill göra. Det finns dock ett problem. Den känner av en KeyDown oavsett var jag befinner mig.
Kan man få den att lyssna efter KeyDown endast när jag är i en input?

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

## #4 — voigtann1, 2008-05-08T19:03Z

onblur kan du göra någon "flagga" som sätts till true = om denna flagga är true = showdiv, och så fort vi har visat den så sätter vi flaggan till false.

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

## #5 — haider, 2008-05-08T19:10Z

Men då måste man ha en onblur för varje input i sidan eller?

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

## #6 — voigtann1, 2008-05-08T19:13Z

Tror det

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

## #7 — Peter S, 2008-05-08T19:14Z

I onload:

```
var formName = "MyForm";
var elms = document.forms[formName].elements;
for (var i = 0; i < elms.length; ++i)
  if (/^input$/i.test(elms[i].nodeName))
    elms[i].onkeydown = showdiv;
```

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

## #8 — haider, 2008-05-08T19:23Z

voigtann: Det är just vad jag försöker undvika. Annars hade jag i varje input-tagg skrivit onKeyDown="showdiv" så vet jag att det funkar.
Jag vill istället göra en global lösning som kör showdiv oavsett vilken input jag ändrar texten i.

Peter: Tack för koden, men den tycks dessvärre inte fungera. Jag testade även på **document.getElementsByTagName('input').onkeydown = showdiv** men så gör man visst inte.

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

## #9 — voigtann1, 2008-05-08T19:27Z

```
var elms = document.getElementsByTagName("input");
for (var i = 0; i < elms.length; i++)
    elms[i].onkeydown = showdiv;
```

getElementsByTagName retunera en array av html elements. Men detta gör egentligen samma sak som onkeydown="showdiv()" Du måste ha den i onload annars hittar den inte input fälten.

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

## #10 — Peter S, 2008-05-08T19:33Z

> **haider skrev:**
>
> Peter: Tack för koden, men den tycks dessvärre inte fungera

Vad är det som inte fungerar? Hur testar du?

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

## #11 — haider, 2008-05-08T19:37Z

okej båda
det tycks vara jag som har missat nåt.

Ni skriver båda att jag ska ha kodsnutten i onLoad. Hur stoppar jag in hela det här paketet i onLoad?
Ska jag skapa en egen funktion för just den kodsnutten och anropa den i onLoad (i body-taggen eller?)

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

## #12 — Peter S, 2008-05-08T19:37Z

Ett exempel:

```
window.onload = function()
{
    // koden här
}
```

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

## #13 — haider, 2008-05-08T19:50Z

Jaha, nu funkar det :)

Scriptet ser alltså ut så här:

```
function hidediv() { 
if (document.getElementById) { // DOM3 = IE5, NS6 
document.getElementById('hideShow').style.visibility = 'hidden'; 
} 
else { 
if (document.layers) { // Netscape 4 
document.hideShow.visibility = 'hidden'; 
} 
else { // IE 4 
document.all.hideShow.style.visibility = 'hidden'; 
} 
} 
}
```

 

Är enda sättet att skapa en ny funktion och låta den köras vid onload, eller kan man baka in koden jag fick i ovanstående kod?
Kanske spelar det ingen roll?

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/171333-onchange
