Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
Entrada incorrecta. valor comprobado

Estoy tratando de registrar la propiedad checked de un elemento de radio en el evento de click . Pero devuelve el valor incorrecto.

 const radio = document.querySelector('input[type=radio]') radio.addEventListener('click', (ev) => { ev.preventDefault(); console.log(ev.target.checked); })
 <p class="rInput"> <input type="radio" name="R" id="ID"> <label for="ID">The label</label> </p>

Al hacer clic en la radio, debe registrar el estado verificado, pero siempre registra true .

Mi solución a esto fue agregar un timeOut de 0 milisegundos, y funcionó

 const radio = document.querySelector('input[type=radio]') radio.addEventListener('click', (ev) => { ev.preventDefault(); setTimeout(() => { console.log(ev.target.checked); }, 0); })
 <p class="rInput"> <input type="radio" id="ID"> <label for="ID">The label</label> </p>

Pero , ¿cuál es el problema y por qué sucede esto? ¿Hay una solución mejor?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Ok, esta es una pregunta un poco extraña. Déjame tratar de explicar por qué lo llamo una pregunta extraña :

  1. Está configurando un preventDefault en un botón de opción que eliminaría sus propiedades predeterminadas (los botones de opción no son las mismas formas de entrada que los botones normales). La razón de esto es que un botón normal puede tener varios estados, mientras que el botón de opción tiene solo 2 estados, a saber, verdadero y falso.
  2. Solo está verificando si el botón está marcado usando console.log console.log(rI.checked); por lo tanto, siempre registrará TRUE .

Espero que tenga sentido. Como seguimiento, creo que deberías VERIFICAR (juego de palabras) cómo hacer que un botón no esté marcado. Esta es una excelente respuesta sobre cómo hacerlo usando JS sin marcos.

Fragmento de código ACTUALIZADO:

 $(document).ready(function(){ $('input[type="radio"]').click(function(){ if($(this).prop("checked") === true){ console.log("Checkbox is checked."); } else if($(this).prop("checked") === false){ console.log("Checkbox is unchecked."); } }); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Sería más sencillo deshabilitar el botón de opción en el que no desea que se haga clic.

 const radios = document.querySelectorAll('input[type="radio"]'); radios.forEach(radio => radio.addEventListener('click', handleClick, false)); function handleClick(e) { const { id, checked } = e.target; console.log(id, checked); };
 <div> <label for="1">First <input name="radio" id="1" type="radio"> </label> <label for="2">Second (disabled) <input name="radio" id="2" type="radio" disabled> </label> <label for="3">Last <input name="radio" id="3" type="radio"> </label> </div>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda