haiderMedlem sedan jan. 2003956 inlägg 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.
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.
haiderMedlem sedan jan. 2003956 inlägg 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?
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.
haiderMedlem sedan jan. 2003956 inlägg Men då måste man ha en onblur för varje input i sidan eller?
Peter SMedlem sedan dec. 20025 483 inlägg 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;
haiderMedlem sedan jan. 2003956 inlägg 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.
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.
Peter SMedlem sedan dec. 20025 483 inlägg
haider skrev:
Peter: Tack för koden, men den tycks dessvärre inte fungera
Vad är det som inte fungerar? Hur testar du?
haiderMedlem sedan jan. 2003956 inlägg 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?)
Peter SMedlem sedan dec. 20025 483 inlägg Ett exempel:
window.onload = function()
{
// koden här
}
haiderMedlem sedan jan. 2003956 inlägg 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?