El otro dia haciendo un formulario para una web del trabajo me encontre con que cuando chequeaba el checkbox, este se deschequeaba automaticamente.
function toggleDefinirGrups() {
var isChecked = document.forms[0].elements["hihagrups"].checked;
console.log("ESTA CHECKED: "+isChecked);
if ( isChecked ) {
// LO HEMOS ACTIVADO
$("#afegirGrups").prop("disabled",false);
} else {
// ANTIMANAZAS CHECKER
swal({
title: $("#swal_delgrups_title").val() ,
text: $("#swal_delgrups_text").val() ,
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: $("#swal_confirm").val(),
cancelButtonText: $("#swal_cancel").val(),
closeOnConfirm: false,
closeOnCancel: false
}, function(isConfirm){
if (isConfirm) {
swal($("#swal_confirmed").val(), "", "success");
$("#afegirGrups").prop("disabled",true);
$("#grups_definits").empty();
} else {
document.forms[0].elements["hihagrups"].checked = true; // Al haber cancelado, volvemos a marcarlo como checked!
swal($("#swal_canceled").val(), "", "error");
}
}
);
}
Ese es el código JScript
El codigo del formulario (la parte importante es esta):
<input type='checkbox' id='hihagrups' class='form-control' name='hihagrups' onClick='toggleDefinirGrups(); return false;' value='S' >
Fue quitarle el return false del argumento onClick y el problema desaparecio, pero me gustaria saber el porque de este motivo.
<input type='checkbox' id='hihagrups' class='form-control' name='hihagrups' onClick='toggleDefinirGrups();' value='S' >
Se comporta como una especie de rollback? O puede ser que el return false, lo interprete como un checked = false.
Sin embargo si ponia return true, me dejaba activarlo y desactivarlo, por lo que ahí se me rompieron los esquemas