Avatar billede andersjo Nybegynder
25. november 2005 - 13:17 Der er 6 kommentarer og
1 løsning

Verdi i radiobutton

ved onclick ønsker jeg å sjekke verdien av den valgte radiobutton. Hvordan gjør jeg det?

<input type="radio" id="single_double" name="single_double" value="single" checked onclick="java script: updateAmount();">

<input type="radio" id="single_double" name="single_double" value="double" onclick="java script: updateAmount();">

function updateAmount(){
  var amount = document.getElementById('amount');
  var reg_fee = document.getElementById('reg_fee').value;
  var hotel_array = document.getElementById('hotel').value.split("-");
  var single_double = document.getElementById('single_double').nodevalue;

  if(single_double == "single") {
        amount.value = "single";
  }
  else {
        amount.value = "double";
  }
}

variabelen single_double inneholder kun verdien "single", jeg får aldri ut verdien "double" selv om den er valgt...
Avatar billede dr_nielsen Nybegynder
25. november 2005 - 13:26 #1
<input type="radio" id="single_double" name="single_double" value="single" checked onclick="updateAmount(this);">

<input type="radio" id="single_double" name="single_double" value="double" onclick="updateAmount(this);">

function updateAmount(o){
  var amount = document.getElementById('amount');
  var reg_fee = document.getElementById('reg_fee').value;
  var hotel_array = document.getElementById('hotel').value.split("-");
  var single_double = document.getElementById('single_double').nodevalue;

  if(o.value == "single") {
        amount.value = "single";
  }
  else {
        amount.value = "double";
  }
}
Avatar billede andersjo Nybegynder
25. november 2005 - 13:32 #2
Ja, det fungerte. Men jeg skal kalle updateAmount() fra flere steder, f.eks en select-meny. Da sendes jo ikke this for radiobutton inn til funksjonen. Hvordan finner jeg verdien til den valgte radiobutton da?

<select name="no_of_nights" onchange="updateAmount();">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select>
Avatar billede andersjo Nybegynder
25. november 2005 - 13:35 #3
Jeg ønsker å lagre verdiene jeg trenger i reg_fee, hotell_array og single_double for til slutt å regne ut en ny verdi på grunnlag av verdiene i variablene. Om det er "single" skal jeg bruke hotel_array[1] og er det "double" skal jeg bruke hotel_array[2].
Avatar billede dr_nielsen Nybegynder
25. november 2005 - 13:47 #4
Her er du nødt til at hente værdien anderledes
en radio har value (elm.value)
mens en select har selectedIndex (this.options[this.selectedIndex].value)

Derfor:
updateAmountFromSelect(this);

function updateAmountFromSelect(o){
  amount.value = o.options[this.selectedIndex].value;
}
Avatar billede andersjo Nybegynder
25. november 2005 - 14:05 #5
Jeg får hentet verdien fra select (no_of_nights) på samme måte som jeg gjorde med reg_fee som er en hidden verdi. Problemet mitt er at jeg ikke får hentet inn verdien til den valgte radiobutton. Jeg har to grupper med radiobuttons (hotel og single_double). I funksjonen trenger jeg å vite verdien til den valgte radiobutton i begge gruppene.

function updateAmountFromRadio(o){
  var amount = document.getElementById('amount');
  var reg_fee = document.getElementById('reg_fee').value;
  var hotel_array = document.getElementById('hotel').value.split("-");
  var no_of_nights = document.getElementById('no_of_nights').value;

  if(o.value == "single") {
      amount.value = parseInt(reg_fee) + ( parseInt(hotel_array[1]) * parseInt(no_of_nights));
    }
    else {
      amount.value = parseInt(reg_fee) + ( parseInt(hotel_array[2]) * parseInt(no_of_nights));
    }
}

hotel_array er også feil her. Den inneholder kun verdien til første element i radiobutton-gruppen.
Avatar billede andersjo Nybegynder
25. november 2005 - 14:37 #6
Jeg fikk løst det!!

function updateAmount(){
  var amount = document.getElementById('amount');
  var reg_fee = document.getElementById('reg_fee').value;
  var no_of_nights = document.getElementById('no_of_nights').value;
  var single_double = "";
  var hotel = "";

  for (counter = 0; counter < document.registrationform.single_double.length; counter++) {
    if (document.registrationform.single_double[counter].checked){
      single_double = document.registrationform.single_double[counter].value;
    }
  }

  for (counter = 0; counter < document.registrationform.hotel.length; counter++) {
    if (document.registrationform.hotel[counter].checked){
      hotel = document.registrationform.hotel[counter].value;
    }
  }

  var hotel_array = hotel.split("-");

  if(single_double == "single") {
    amount.value = parseInt(reg_fee) + ( parseInt(hotel_array[1]) * parseInt(no_of_nights));
  }
  else {
    amount.value = parseInt(reg_fee) + ( parseInt(hotel_array[2]) * parseInt(no_of_nights));
  }
}
Avatar billede andersjo Nybegynder
06. juli 2007 - 14:23 #7
Se kommentarer over....
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