Avatar billede simm Nybegynder
08. januar 2006 - 15:52 Der er 7 kommentarer og
1 løsning

Tilføje eventhandler til inputboks

Hej, jeg forsøger at tilføje en eventhandler til et tekstfelt via javascript. 

koden ser således ud - ganske simpelt. men det virker ikke i den webshop jeg bruger (Dandomain Webshop 5.0) - og der kommer ingen fejlmeddelelser, så det er svært at debugge.


function startCalc(){
  interval = setInterval("calc()",1);
}
function calc(){
  inputbox_one = document.myform.getElementById('variant1').value;
  inputbox_two = document.myform.getElementById('variant2').value;
  resultbox = document.myform.getElementById('variant3').value
 
  resultbox = (inputbox_one * 1) + (inputbox_two * 1);
}
function stopCalc(){
  clearInterval(interval);
}

document.myform.variant1.onfocus = startCalc;

Mangler der noget?

På forhånd tak
Avatar billede olebole Juniormester
09. januar 2006 - 01:12 #1
<ole>

Ja:
    resultbox.value = (inputbox_one * 1) + (inputbox_two * 1);

/mvh
</bole>
Avatar billede olebole Juniormester
09. januar 2006 - 01:13 #2
Njahhh ... jeg så forkert  :)

function calc(){
  inputbox_one = document.myform.getElementById('variant1').value;
  inputbox_two = document.myform.getElementById('variant2').value;
 
  document.myform.getElementById('variant3').value = (inputbox_one * 1) + (inputbox_two * 1);
}
Avatar billede olebole Juniormester
09. januar 2006 - 01:15 #3
- og så skal du nok køre værdierne gennem en parseInt, først:

function calc(){
  inputbox_one = parseInt(document.myform.getElementById('variant1').value);
  inputbox_two = parseInt(document.myform.getElementById('variant2').value);
 
  document.myform.getElementById('variant3').value = (inputbox_one * 1) + (inputbox_two * 1);
}

Så er du sikker på, tallene virkelig _er_ tal ... og ikke tekststrenge  ;o)
Avatar billede olebole Juniormester
09. januar 2006 - 01:18 #4
Bahhh ... nu skal olebole vist snart sove  :oP
Du kan enten bruge parseInt:

function calc(){
  inputbox_one = parseInt(document.myform.getElementById('variant1').value);
  inputbox_two = parseInt(document.myform.getElementById('variant2').value);
 
  document.myform.getElementById('variant3').value = inputbox_one + inputbox_two;
}

- eller du kan gange værdierne med 1 ('quick-and-dirty' metode, der giver samme resultat):

function calc(){
  inputbox_one = document.myform.getElementById('variant1').value;
  inputbox_two = document.myform.getElementById('variant2').value;
 
  document.myform.getElementById('variant3').value = (inputbox_one * 1) + (inputbox_two * 1);
}
Avatar billede simm Nybegynder
09. januar 2006 - 13:41 #5
Tak Ole :D Du er en ven i nøden! Men jeg synes ikke jeg kan få event'en til at blive "affyret"

når jeg så skriver document.myform.variant1.onfocus = StartCalc;
IE melder ikke fejl, der sker ingenting, men Firefox siger "document.myform has no properties"

Hvad kan det være?
Avatar billede olebole Juniormester
09. januar 2006 - 19:54 #6
Mon formen er 'tegnet' i browseren, når du prøver at kalde et element i den i denne linje:
    document.myform.variant1.onfocus = startCalc;

Nu ved jeg ikke, hvordan funktionen skal kaldes, men det kunne jo være, du skulle skrive:

    document.myform.variant1.onfocus = startCalc;
    document.myform.variant1.onblur = startCalc;
    document.myform.variant2.onfocus = startCalc;
    document.myform.variant2.onblur = startCalc;

- så kaldes beregnings-funktionen hvergang du 'går ind' i et felt - eller forlader det. Det er dog stadig nødvendigt, at formen er 'tegnet'.
En typisk måde at sikre sig det på, er ved at sætte event-handlers på onload  :)
Avatar billede simm Nybegynder
11. januar 2006 - 01:26 #7
Så virker det, jeg satte nemlig event-handlers på onload.. Tak Ole, smider du lige et svar? :)
Avatar billede olebole Juniormester
12. januar 2006 - 20:44 #8
Godt at høre ... og selvtak  ;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