Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Al comprobar valor de radiobutton encuentra valor sin estar seleccionado

Estas en el tema de Al comprobar valor de radiobutton encuentra valor sin estar seleccionado en el foro de Javascript en Foros del Web. Buenas a [email protected], tengo un misterio ante mi y no consigo avanzar. Resulta que tengo un formulario donde los usuario tienen que seleccionar una opción ...
  #1 (permalink)  
Antiguo 10/01/2019, 10:05
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 735
Antigüedad: 16 años, 1 mes
Puntos: 8
Al comprobar valor de radiobutton encuentra valor sin estar seleccionado

Buenas a [email protected], tengo un misterio ante mi y no consigo avanzar. Resulta que tengo un formulario donde los usuario tienen que seleccionar una opción entre varios radiobuttons. Al darle a enviar, se les muestra un mensaje para que confirmen si realmente quieren hacerlo o no, pero claro, quiero que seleccionen una opción de forma obligatoria así que había pensado en comprobar primero el valor del radiobutton, si está en blanco, no sigue, y si tiene valor, ya pasa al siguiente paso.
El problema está en que, si no seleccionan ningún valor, y pulsan el botón, el javascript siempre me dice que tiene un valor (el del segundo de los radiobuttons) y no consigo saber por que razón pasa esto.
A ver si alguien me puede echar una manita, os pongo el código:

Código Javascript:
Ver original
  1. <script>
  2. function enviar2() {
  3.   var txt;
  4.   var decision;
  5.   decision = document.getElementById('decision').value;
  6.  
  7.   alert("entro " + decision); //mostrar valor elegido
  8.   if (document.getElementById('decision').value <> ''){
  9.       if (decision == 1) {
  10.           txt = "Aceptar empresa y ACTUALIZAR datos en GDP";
  11.           if (confirm("¿Estás seguro de querer " + txt + "?")) {
  12.             document.form1.submit();
  13.           } else {
  14.             //txt = "You pressed Cancel!";
  15.           }
  16.       }
  17.       if (decision == 2) {
  18.           txt = "Aceptar empresa y NO actualizar datos en GDP";
  19.           if (confirm("¿Estás seguro de querer " + txt + "?")) {
  20.             document.form1.submit();
  21.           } else {
  22.             //txt = "You pressed Cancel!";
  23.           }
  24.       }
  25.       if (decision == 3) {
  26.           txt = "DESCARTAR empresa";
  27.           if (confirm("¿Estás seguro de querer " + txt + "?")) {
  28.             document.form1.submit();
  29.           } else {
  30.             //txt = "You pressed Cancel!";
  31.           }
  32.       }
  33.       if (decision == 4) {
  34.           txt = "Aceptar empresa e Incorporar a GDP";
  35.           if (confirm("¿Estás seguro de querer " + txt + "?")) {
  36.             document.form2.submit();
  37.           } else {
  38.             //txt = "You pressed Cancel!";
  39.           }
  40.       }
  41.       if (decision == 5) {
  42.           txt = "DESCARTAR empresa";
  43.           if (confirm("¿Estás seguro de querer " + txt + "?")) {
  44.             document.form2.submit();
  45.           } else {
  46.             //txt = "You pressed Cancel!";
  47.           }
  48.       }
  49.   } else {
  50.       alert("Seleccione una opción por favor");
  51.   }
  52. }
  53. </script>

Código HTML:
Ver original
  1. form action="revisar_datos2.asp" method="post" name="form1" id="form1">
  2.             <p>
  3.               <input type="radio" name="decision" id="radio" value="1" required>
  4.               Aceptar empresa y ACTUALIZAR datos en GDP
  5.             <input type="radio" name="decision" id="decision" value="2" required> Aceptar empresa y NO actualizar datos en GDP
  6.             <input type="radio" name="decision" id="decision" value="3" required> Descartar empresa
  7.             <input type="button" name="button" id="button" value="Botón" onclick="enviar2()">
  8.          
  9.             </p>
  10. </form>
__________________
Vayamos por Partes :: Jack el Destripador
  #2 (permalink)  
Antiguo 10/01/2019, 13:22
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.072
Antigüedad: 14 años, 7 meses
Puntos: 777
Respuesta: Al comprobar valor de radiobutton encuentra valor sin estar seleccionado

Sucede que estás usando el mismo valor de id para varios elementos. Y el id debería ser un identificador único. En lugar de usar document.getElementById('decision'), podrías comprobar el value del que esté chequeado de esta manera:

Código Javascript:
Ver original
  1. var decision=Number(Boolean(document.querySelector('input[name="decision"]:checked'))) && document.querySelector('input[name="decision"]:checked').value;

Última edición por Panino5001; 10/01/2019 a las 16:50
  #3 (permalink)  
Antiguo 11/01/2019, 01:07
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 735
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Al comprobar valor de radiobutton encuentra valor sin estar seleccionado

Cita:
Iniciado por Panino5001 Ver Mensaje
Sucede que estás usando el mismo valor de id para varios elementos. Y el id debería ser un identificador único. En lugar de usar document.getElementById('decision'), podrías comprobar el value del que esté chequeado de esta manera:

Código Javascript:
Ver original
  1. var decision=Number(Boolean(document.querySelector('input[name="decision"]:checked'))) && document.querySelector('input[name="decision"]:checked').value;
Ese comando no me ha servido, pero con lo que me has dicho ya me has indicado el camino y lo he resuelto de otra forma. Es un poco más largo, pero funciona, y como tengo prisa, así se queda de momento. Muchas gracias

Código Javascript:
Ver original
  1. var decision=0;
  2.       decision1 = document.getElementById('decision1').checked;
  3.       decision2 = document.getElementById('decision2').checked;
  4.       decision3 = document.getElementById('decision3').checked;
  5.       if (decision1==true){
  6.           decision=1
  7.       }
  8.       if (decision2==true){
  9.           decision=2
  10.       }
  11.       if (decision3==true){
  12.           decision=3
  13.       }  
  14.  
  15.           if (decision==0){
  16.           alert("Debe seleccionar una opción");
  17.           } else {
  18.            if (decision == 1) {
  19.              txt = "Aceptar empresa y ACTUALIZAR datos en GDP";
  20.            ...
__________________
Vayamos por Partes :: Jack el Destripador



La zona horaria es GMT -6. Ahora son las 14:30.