Avatar billede jb2000 Nybegynder
31. oktober 2006 - 15:56 Der er 11 kommentarer og
1 løsning

tilføj metode til onchange

Hej
Jeg nogle inputfelter som jeg gerne vil have tilføjet en ekstra funktion på onchange.
Min kode ser sådan ud.
Kan nogle tilrette det så l..... virker.

var all = document.all ? document.all : document.getElementsByTagName("*");           
for (var i = 0; i < all.length; i++)
{    all[i].onchange = all[i].onchange + test_2();}
Avatar billede psykochicken Nybegynder
31. oktober 2006 - 16:56 #1
noget ala:
<script type="text/javascript">
var a = document.getElementsByTagName("input");           
for(i=0;i<a.length;i++){
    a[i].onchange = function(){test_2();test_3();test_4();...osv}
}
</script>

/psc
Avatar billede psykochicken Nybegynder
31. oktober 2006 - 16:57 #2
hovsa....noget ala:
<script type="text/javascript">
function dosome(){
var a = document.getElementsByTagName("input");           
for(i=0;i<a.length;i++){
    a[i].onchange = function(){test_2();test_3();test_4();...osv}
}
window.onload=dosome;
</script>

/psc
Avatar billede jb2000 Nybegynder
31. oktober 2006 - 18:21 #3
men hvis jeg ikke ved hvilke metoder som allerede ligger på onchange. Der ligger i forvejen forskellige metoder på de forskellige input.
Avatar billede psykochicken Nybegynder
01. november 2006 - 00:27 #4
Så er det nok en god ide at få styr på hvilke funktioner, der i forvejen ligger på de forskellige inputs inden du går videre.

Vis et eksempel eller smid et link ;o)

/psc
Avatar billede jb2000 Nybegynder
01. november 2006 - 10:37 #5
Noget ala
        <input onchange="visBillede();" type="text" size="17" />
        <input onchange="createDropdown();" type="text" />
hvor der efter følgende onload skal tilføjes test_2(); til alle inputfelter.
Avatar billede psykochicken Nybegynder
02. november 2006 - 01:43 #6
Jeg ville nok fjerne alle onchange fra input-ene og tilføje funktionerne direkte i scriptet.....noget i stil med:

<script type="text/javascript">
function dosome(){
  var a = document.getElementsByTagName("input");           
  for(i=0;i<a.length;i++){
    if(a[i].name=='navn1')
        a[i].onchange = function(){test_2();visBillede();}
    else if(a[i].name=='navn2')
        a[i].onchange = function(){test_2();createDropdown();}
    else
        a[i].onchange = function(){test_2();}
  }
}
window.onload=dosome;
</script>

<form>
<input type="text" name="navn1">
<input type="text" name="navn2">
<input type="text" name="etandetnavn">
....osv
</form>

/psc
Avatar billede jhe-ting Nybegynder
02. november 2006 - 13:41 #7
Man kan 'hægte' sig på et event uden at ændre på allerede installerede event-handlers med metoden 'attachEvent(sEvent, fpHandler)'.
Man kommer så 'til fadet' lige efter elementets egen handler.
På denne måde kan man undgå at bekymre sig om hvilke event-handlers der allerede er installeret.
Se også på 'detachEvent'.

PS: Denne metode er egentlig beregnet til HTC'er men er brugbar til formålet.
Avatar billede psykochicken Nybegynder
02. november 2006 - 16:11 #8
...og så kan man vel lige så godt tage andre browsere end IE med: 

function dosome() {
  var elm = document.getElementsByTagName("input");
    for(i=0;i<elm.length;i++){
      if(window.addEventListener){ // Mozilla, Netscape, Firefox     
          elm[i].addEventListener("onchange", test_2, false);
      }
      else { // IE
          elm[i].attachEvent("onchange", test_2);
      }
    }
  }

...om man så vil beholde de øvrige onchange-funktionerne direkte på input eller lægge dem op i scriptet er et temperamentspørgsmål.

/psc
Avatar billede jb2000 Nybegynder
06. november 2006 - 15:41 #9
takker for det begge to..
Jeg giver point til psykochicken.
Avatar billede psykochicken Nybegynder
07. november 2006 - 22:12 #10
velbekomme ;o)
Avatar billede olebole Juniormester
13. november 2006 - 10:11 #11
<ole>

Der er en væsentlig forskel på brugen af de to metoder:
    elm[i].addEventListener("change", test_2, false);
- og:
    elm[i].attachEvent("onchange", test_2);

NB: Aldrig 'on' i event-navnet, når vi taler addEventListener  ;o)

/mvh
</bole>
Avatar billede psykochicken Nybegynder
13. november 2006 - 13:33 #12
ups....tak for rettelsen ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering

IT-Universitetet i København

CIO

Politiets Efterretningstjeneste

IT-frontdesk medarbejder til PET's IT Servicedesk

Politiets Efterretningstjeneste

AI/ML udvikler i PET