Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

156
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda