$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));
$('#checkbox1').change(function() {
$('#textbox1').val($(this).is(':checked'));
});
$('#checkbox1').click(function() {
if (!$(this).is(':checked')) {
return confirm("Are you sure?");
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1"/><br />
<input type="text" id="textbox1"/>
Aquí .change()
actualiza el valor del cuadro de texto con el estado de la casilla de verificación. Yo uso .click()
para confirmar la acción al desmarcar. Si el usuario selecciona cancelar, la marca de verificación se restaura pero se .change()
activa antes de la confirmación.
Esto deja las cosas en un estado inconsistente y el cuadro de texto dice falso cuando la casilla de verificación está marcada.
¿Cómo puedo hacer frente a la cancelación y mantener el valor del cuadro de texto coherente con el estado de verificación?
javascript
jquery
event-handling
Profesor caos
fuente
fuente
Respuestas:
Probado en JSFiddle y hace lo que está pidiendo. Este enfoque tiene el beneficio adicional de disparar cuando se hace clic en una etiqueta asociada con una casilla de verificación.
Respuesta actualizada:
Respuesta original
fuente
this.checked
lugar de$(this).is(':checked')
: jsperf.com/prop-vs-ischecked/5this.checked
es mucho más corto de escribir + javascript nativo, podría valer la pena usarlo en general (aparte de ser ~ 200 a 300 veces más rápido).Manifestación
Utilizar
mousedown
fuente
La mayoría de las respuestas no lo captarán (presumiblemente) si las usa
<label for="cbId">cb name</label>
. Esto significa que cuando hace clic en la etiqueta, marcará la casilla en lugar de hacer clic directamente en la casilla de verificación. (No es exactamente la pregunta, pero varios resultados de búsqueda tienden a venir aquí)En cuyo caso podrías usar:
Earlier versions of jQuery:
Ejemplo de JSFiddle con jQuery 1.6.4
jQuery 1.7+
Ejemplo de JSFiddle con la última versión de jQuery 2.x
fuente
Bueno ... solo por ahorrar un dolor de cabeza (es pasada la medianoche aquí), podría pensar:
Espero eso ayude
fuente
Para mí esto funciona muy bien:
fuente
Aquí estás
HTML
JavaScript
fuente
Deshágase del evento de cambio y, en su lugar, cambie el valor del cuadro de texto en el evento de clic. En lugar de devolver el resultado de la confirmación, póngalo en una var. Si es cierto, cambie el valor. Luego devuelva la var.
fuente
El problema es hacer clic en la casilla de verificación y verificar el valor en el mismo bucle de eventos.
Prueba esto:
Demostración: http://jsfiddle.net/mrchief/JsUWv/6/
fuente
Si está utilizando iCheck Jquery, use el código siguiente
fuente
Prueba esto
fuente
fuente
fuente
fuente
Respuesta tardía, pero también puedes usar
on("change")
fuente
simplemente use el evento de clic mi ID de casilla de verificación es CheckAll
fuente
obtener valor de radio por nombre
fuente
No estoy seguro de por qué todo el mundo está haciendo esto tan complicado. Esto es todo lo que hice.
fuente
fuente