Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problemas con radio buton

Estas en el tema de Problemas con radio buton en el foro de Javascript en Foros del Web. Hola, ¿podría por favor ayudarme? tengo este problema, me explico, tengo dos columnas, Siempre y Con frecuencia, la columna Siempre (cada radio botton tiene un ...
  #1 (permalink)  
Antiguo 08/01/2014, 16:55
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Problemas con radio buton

Hola, ¿podría por favor ayudarme? tengo este problema, me explico, tengo dos columnas, Siempre y Con frecuencia, la columna Siempre (cada radio botton tiene un valor de 2 en esta columna, por lo tanto su valor total es 10)
la columna Con frecuencia (cada radio botton tiene un valor de 1.34 en esta columna, valor total es de 6.7)
quiero hacer lo siguiente, que cuando seleccione por ejemplo todos los de la columna 1 me marque los 10, pero que al marca un radio botton de la columna 2 (Con frecuencia) se disminuya el puntare de 10 a 8 y que en el campo de texto total 2 me muestre los 1.34 que es el valor de un radio botton de esa columna, espero me entiendan, por favor agradezco su ayuda, y si no entienden algo agradezco me pregunte.


Este es el codigo de lo que hice:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Prueba</title>

<script language="javascript">

function Suma(isChecked, myValue)
{
tot = parseFloat(document.Prueba.total1.value);
myValue = parseFloat(myValue);
if (isChecked) document.Prueba.total1.value = tot + myValue;
else document.Prueba.total1.value = tot - myValue;

}
-->
</script>
<script language="javascript">

function Suma2(isChecked, myValue)
{
tot = parseFloat(document.Prueba.total2.value);
myValue = parseFloat(myValue);
if (isChecked) document.Prueba.total2.value = tot + myValue;
else document.Prueba.total2.value = tot - myValue;

}
-->
</script>
</head>
<body>
<form id="form1" name="Prueba" method="post" action="">
<table width="289" border="1">
<tr class="centrado">
<td width="144">Siempre</td>
<td width="129">Con frecuencia</td>
</tr>
<tr>
<td><input type="radio" name="c0" onClick="Suma(this.checked,this.value)" value="2.00" id="1a_0"/></td>
<td ><input type="radio" name="c0" onClick="Suma2(this.checked,this.value)" value="1.34" id="1a_1" /></td>
</tr>
<tr>
<td ><input type="radio" name="c1" onClick="Suma(this.checked,this.value)"value="2.00 " id="1a_5" /></td>
<td><input type="radio" name="c1" onClick="Suma2(this.checked,this.value)"value="1.3 4" id="1a_6" /></td>
</tr>
<tr>
<td><input type="radio" name="c2" onClick="Suma(this.checked,this.value)" id="1a_10" value="2.00" /></td>
<td><input type="radio" name="c2" onClick="Suma2(this.checked,this.value)" value="1.34" id="1a_11" /></td>
</tr>
<tr>
<td><input type="radio" name="c3"onClick="Suma(this.checked,this.value)" value="2.00"id="1a_15" /></td>
<td><input type="radio" name="c3"onClick="Suma2(this.checked,this.value)" value="1.34" id="1a_17" /></td>
</tr>
<tr>
<td><input type="radio" name="c4"onClick="Suma(this.checked,this.value)"va lue="2.00" id="1a_16" />
<td><input type="radio" name="c4" onClick="Suma2(this.checked,this.value)"value="1.3 4" id="1a_3" /></td>
</tr>
</table>
<p>&nbsp;</p>
<input type="text" name="total1" value="0" id="total1">
<input type="text" name="total2" value="0" />
</form>
</body>
</html>

Última edición por quimerajdrs; 08/01/2014 a las 17:04
  #2 (permalink)  
Antiguo 09/01/2014, 11:41
 
Fecha de Ingreso: agosto-2013
Mensajes: 150
Antigüedad: 10 años, 8 meses
Puntos: 29
Respuesta: Problemas con radio buton

¿Aún estás interesado en la respuesta?
  #3 (permalink)  
Antiguo 09/01/2014, 16:41
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Problemas con radio buton

Cita:
Iniciado por bathorz Ver Mensaje
¿Aún estás interesado en la respuesta?

si, por favor ayudeme
  #4 (permalink)  
Antiguo 10/01/2014, 02:42
 
Fecha de Ingreso: agosto-2013
Mensajes: 150
Antigüedad: 10 años, 8 meses
Puntos: 29
Respuesta: Problemas con radio buton

Puedes sacar una idea de esto:
Código HTML:
Ver original
  1. <script type="text/javascript">
  2.  
  3.   function prueba() {
  4.     var tot1 = 0;
  5.     var tot2 = 0;
  6.     //
  7.     var oRadio1 = document.getElementsByName('c0');
  8.     for (var i = 0; i < oRadio1.length; i++) {
  9.      if (oRadio1[i].checked) {
  10.        tot1 += parseFloat(oRadio1[i].value);
  11.      }
  12.    }
  13.    //
  14.    var oRadio2 = document.getElementsByName('c1');
  15.    var mas2 = 0;
  16.    for (var i = 0; i < oRadio2.length; i++) {
  17.      if (oRadio2[i].checked) {
  18.        tot2 += parseFloat(oRadio2[i].value);
  19.        mas2 += parseFloat(2);
  20.      }
  21.    }
  22.    //
  23.    document.getElementById("total1").value = tot1;
  24.    document.getElementById("total2").value = tot2;
  25.    //
  26.    document.getElementById("suma1").innerHTML = tot1;
  27.    document.getElementById("suma2").innerHTML = tot2;
  28.    document.getElementById("suma3").innerHTML = tot1 - mas2;
  29.  }
  30.  
  31. <form id="form1" name="Prueba" method="post" action="">
  32.   <table width="289" border="1">
  33.     <tr class="centrado">
  34.       <td width="144">Siempre</td>
  35.       <td width="129">Con frecuencia</td>
  36.     </tr>
  37.     <tr>
  38.       <td><input type="checkbox" name="c0"
  39.                 onClick="prueba()" value="2.00" id="c0_1" />
  40.       </td>
  41.       <td><input type="checkbox" name="c1"
  42.                 onClick="prueba()" value="1.34" id="C1_1" />
  43.       </td>
  44.     </tr>
  45.     <tr>
  46.       <td><input type="checkbox" name="c0"
  47.                 onClick="prueba()" value="2.00 " id="c0_2" />
  48.       </td>
  49.       <td><input type="checkbox" name="c1"
  50.                 onClick="prueba()" value="1.34" id="C1_2" />
  51.       </td>
  52.     </tr>
  53.     <tr>
  54.       <td><input type="checkbox" name="c0"
  55.                 onClick="prueba()" value="2.00" id="C0_3" />
  56.       </td>
  57.       <td><input type="checkbox" name="c1"
  58.                 onClick="prueba()" value="1.34" id="C1_3" />
  59.       </td>
  60.     </tr>
  61.     <tr>
  62.       <td><input type="checkbox" name="c0"
  63.                 onClick="prueba()" value="2.00" id="C0_4" />
  64.       </td>
  65.       <td><input type="checkbox" name="c1"
  66.                 onClick="prueba()" value="1.34" id="C1_4" />
  67.       </td>
  68.     </tr>
  69.     <tr>
  70.       <td><input type="checkbox" name="c0"
  71.                 onClick="prueba()" value="2.00" id="C0_5" />
  72.       </td>
  73.       <td><input type="checkbox" name="c1"
  74.                 onClick="prueba()" value="1.34" id="C1_5" />
  75.       </td>
  76.     </tr>
  77.   </table>
  78.   <p>&nbsp;</p>
  79.   <input type="text" name="suma1" value="0" id="total1">
  80.   <input type="text" name="suma2" value="0" id="total2" />
  81. </form>
  82. Parcial c1:<div id="suma1">0</div>
  83. Parcial c2:
  84. <div id="suma2">0</div>
  85. Total:
  86. <div id="suma3">0</div>
  #5 (permalink)  
Antiguo 10/01/2014, 08:26
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Problemas con radio buton

[QUOTE=bathorz;4552374]Puedes sacar una idea de esto:
[HIGHLIGHT="HTML"]
<script type="text/javascript">

function prueba() {
var tot1 = 0;
var tot2 = 0;
...

Muchas gracias bathorz (Y),el codigo que me dio esta muy interesante, he tratado de acomodar el codigo a mi necesidad y no he sido capaz, usted uso "checkbox" en el código que me dejo pero no creo que se puedan usar en mi necesidad ya que usted me esta permitiendo seleccionar las dos opciones por pregunta, y solo se debería seleccionar una, es por eso que yo le puse al nombre del radio en la columna Siempre y con Frecuencia el mismo nombre.
perdon por no ser claro con la pregunta, aqui dejo el codigo un poco mejor y anexo un ejemplo para que me entienda:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Prueba</title>

<script language="javascript">

function Suma(isChecked, myValue)
{
tot = parseFloat(document.Prueba.total1.value);
myValue = parseFloat(myValue);
if (isChecked) document.Prueba.total1.value = tot + myValue;
else document.Prueba.total1.value = tot - myValue;

}
-->
</script>
<script language="javascript">

function Suma2(isChecked, myValue)
{
tot = parseFloat(document.Prueba.total2.value);
myValue = parseFloat(myValue);
if (isChecked) document.Prueba.total2.value = tot + myValue;
else document.Prueba.total2.value = tot - myValue;

}
-->
</script>
</head>
<body>
<form id="form1" name="Prueba" method="post" action="">
<table width="439" border="1">
<tr class="centrado">
<td width="144"><strong>PREGUNTAS</strong></td>
<td width="144">Siempre</td>
<td width="129">Con frecuencia</td>
</tr>
<tr>
<td>1. ¿eres puntual?</td>
<td><input type="radio" name="c0" onClick="Suma(this.checked,this.value)" value="2.00" id="1a_0"/></td>
<td ><input type="radio" name="c0" onClick="Suma2(this.checked,this.value)" value="1.34" id="1a_1" /></td>
</tr>
<tr>
<td >2. ¿Te gusta....?</td>
<td ><input type="radio" name="c1" onClick="Suma(this.checked,this.value)"value="2.00 " id="1a_5" /></td>
<td><input type="radio" name="c1" onClick="Suma2(this.checked,this.value)"value="1.3 4" id="1a_6" /></td>
</tr>
<tr>
<td>3. ¿cual es...?</td>
<td><input type="radio" name="c2" onClick="Suma(this.checked,this.value)" id="1a_10" value="2.00" /></td>
<td><input type="radio" name="c2" onClick="Suma2(this.checked,this.value)" value="1.34" id="1a_11" /></td>
</tr>
<tr>
<td>4. ¿como es...?</td>
<td><input type="radio" name="c3"onClick="Suma(this.checked,this.value)" value="2.00"id="1a_15" /></td>
<td><input type="radio" name="c3"onClick="Suma2(this.checked,this.value)" value="1.34" id="1a_17" /></td>
</tr>
<tr>
<td>5. ¿has salido...?
<td><input type="radio" name="c4"onclick="Suma(this.checked,this.value)"va lue="2.00" id="1a_16" />
<td><input type="radio" name="c4" onclick="Suma2(this.checked,this.value)"value="1.3 4" id="1a_2" /></td>
</tr>
<tr>
<td>Total de cada columna
<td><input type="text" name="total1" value="0" id="total1" />
<td><input type="text" name="total2" value="0" /></td>
</tr>
</table>
<p>&nbsp;</p>
<p>//seleccione por favor las 5 preguntas de la columna siempre, esto deberia mostrar un total de 10, ahora supongamos que yo me arrepenti y decido cambiar la pregunta 1 &quot;¿eres puntual&quot;? de Siempre a Con Frecuencia, el resultado deberia ser entonces:</p>
<p>Columna siempre= 8</p>
<p>Columna Con Frecuencia = 1.34</p>
<p>El problema como usted puede ver, es que la columna siempre no disminuye, permanece en 10 y deberia ser 8.</p>
<p>Muchas gracias por su ayuda compañero, </p>
</form>
</body>
</html>
  #6 (permalink)  
Antiguo 10/01/2014, 13:10
 
Fecha de Ingreso: agosto-2013
Mensajes: 150
Antigüedad: 10 años, 8 meses
Puntos: 29
Respuesta: Problemas con radio buton

Cuando se ejecuta Suma2 no hay referencia a que se ejecute Suma(), por tanto dicha función no procede a restar: tot - valor.
He puesto todo en una sola función.
Cambios:
Código HTML:
Ver original
  1. <td><input type="radio" name="c0" onClick="Suma(this)" value="2.00" id="1a_0"/></td>
  2. <td ><input type="radio" name="c0" onClick="Suma(this)" value="1.34" id="1a_1" /></td>

Código Javascript:
Ver original
  1. function Suma(obj) {
  2.   var tot = parseFloat(document.Prueba.total1.value);
  3.   var tot2 = parseFloat(document.Prueba.total2.value);
  4.   var nombre = obj.name;
  5.   var oRadio = document.getElementsByName(nombre);
  6.   //
  7.   if (oRadio[0].checked === true) {
  8.     tot += parseFloat(oRadio[0].value);
  9.     tot2 -= parseFloat(oRadio[1].value);
  10.   }
  11.   if (oRadio[1].checked === true) {
  12.     tot2 += parseFloat(oRadio[1].value);
  13.     tot -= parseFloat(2);
  14.   }
  15.   //
  16.   document.Prueba.total1.value = tot;
  17.   document.Prueba.total2.value = tot2;
  18. }

Última edición por bathorz; 10/01/2014 a las 13:16
  #7 (permalink)  
Antiguo 10/01/2014, 14:20
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Problemas con radio buton

Muchas gracias compañero,
bathorz, usted escribio "var oRadio = document.getElementsByName(nombre);"
¿con (nombre) usted quiso decir: c0, c1, c2, c3, c4? no quiere funcionar el codigo que usted escribio :(
en el campo de texto total2 me aparecen valores negativos y al seleccionar todos los del lado izquierdo y luego los del lado derecho me queda el numero 2 en total1 (deberia quedar en cero ya que no hay ningun radio seleccionado) otra cosa que le pasa al codigo es que al seleccionar un radio de la columna Siempre, se selecciona de la columna Con frecuencia tambien porque esta tambien aumenta (en valores negativos es el aumento).
man, le agradezco su ayuda, ¿que esta pasando con el código, por que no esta funcionando?
  #8 (permalink)  
Antiguo 10/01/2014, 14:32
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Problemas con radio buton

yo creo que todos los radios deberian tener un id diferente (serian 10 id en total, ) luego, tomaria los 5 id de la columna Siempre y colocaria que la suma de esos id sea igual a 10, (se haría lo mismo con la columna Con frecuencia). se pondria una condicion donde se diga que si todos estos cinco radio estan seleccionados me muestre un valor de 10, de lo contrario mostrar la suma de la cantidad de radio seleccionados y se haria lo mismo con la columna Con Frecuencia. esa seria la logica que yo usaria pero no se como escribirla en codigo java scrib ya que soy un novato. gracias
  #9 (permalink)  
Antiguo 11/01/2014, 14:13
 
Fecha de Ingreso: agosto-2013
Mensajes: 150
Antigüedad: 10 años, 8 meses
Puntos: 29
Respuesta: Problemas con radio buton

Para poder agrupar los datos en 2 columnas las he identificado con una clase.
class="col0" para la columna Siempre
class="col0" para la columna Con frecuencia
De este modo puedo sumarlas con un bucle

Cambios:
Código HTML:
Ver original
  1. <td><input type="radio" name="c0" class="col0" onClick="Suma(this)" value="2.00" id="1a_0" /></td>
  2. <td><input type="radio" name="c0" class="col1" onClick="Suma(this)" value="1.34" id="1a_1" /></td>
La función
Código Javascript:
Ver original
  1. function Suma(obj) {
  2.  
  3.   var parcial1 = 0;
  4.   var parcial2 = 0;
  5.   var input = document.getElementsByTagName('input');
  6.  
  7.   for (var i = 0; i < input.length; i++) {
  8.     // Suma Siempre
  9.     if (input[i].checked && input[i].className === 'col0') {
  10.       parcial1 += parseFloat(input[i].value);
  11.     }
  12.     // Suma Con frecuencia
  13.     if (input[i].checked && input[i].className === 'col1') {
  14.       parcial2 += parseFloat(input[i].value);
  15.     }
  16.   }
  17.   //
  18.   document.Prueba.total1.value = parcial1;
  19.   document.Prueba.total2.value = parcial2.toFixed(2); // fija 2 decimales
  20. }
  #10 (permalink)  
Antiguo 11/01/2014, 21:09
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Problemas con radio buton

You rock! thanks again. :)

Etiquetas: html, input, radio, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:11.