He estado tratando de trabajar en lo que estoy seguro es una solución fácil y directa para tener grupos de botones de radio rastreados para cambios de estado. Aquí hay uno de esos grupos:
<div class="formRowDiv"> <label><span>TLan:</span></label> <label> <input type="radio" id="tlanYes" name="tlan" value="tlanYes" <?php if ( $inputValArr[ 'tl' ] == "1" ) { echo ' checked'; } ?> > <span class="radioLabel">Yes</span> </label> <label> <input type="radio" id="tlanNo" name="tlan" value="tlanNo" <?php if ( $inputValArr[ 'tl' ] == "0" ) { echo ' checked'; } ?> > <span class="radioLabel">No</span> </label> <script> $(document).ready(function() { $("input:radio[name='tlan']:checked").change(function() { if ($("input[name='tlan']:checked").val()=='tlanNo') { alert( 'tlan: No' ); } else if ($("input[name='tlan']:checked").val()=='tlanYes') { alert( 'tlan: Yes' ); } // close IF }); // close anon FUNC .change }); // close anon FUNC doc.ready </script> </div><!-- close formRowDiv -->
El formulario tiene sus valores de entrada determinados inicialmente recuperándolos de la consulta mySql ().
Si el valor establecido inicialmente por una consulta de mySql es 0 y, por lo tanto, "No" (value="tlanNo"), entonces cuando el usuario hace clic para cambiar el campo a "Sí", la alerta no se activa y cuando miro el fuente de la página es el botón "no" que todavía está marcado.
Cuando se selecciona el botón "no", cambiando del "Sí" previamente seleccionado, se dispara la alerta y la fuente de la página muestra que es (¿todavía?) el botón "No" el que está marcado.
Finalmente, quiero guardar el estado modificado del botón en la matriz $_SESSION de la página. Entonces, ¿por qué el cambio en el valor del botón no establecido inicialmente no se registra y, por lo tanto, activa la alerta y refleja el cambio en la fuente de la página después de que se ha realizado el cambio, pero parece un cambio "de regreso" al estado inicial? para registrarse?
Por cierto: tengo la biblioteca jQuery actual ubicada en el directorio de html.php y referenciada en el encabezado de la página de la siguiente manera:
<script type="text/javascript" src="jquery-3.2.0.min.js"></script>
El selector :checked funciona para casillas de verificación, botones de radio y opciones de elementos seleccionados.
$("input:radio[name='tlan']").change(function() { ...
en vez de
$("input:radio[name='tlan']:checked").change(function() { ...