elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Funcionamiento extraño con Jscript y Checkbox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funcionamiento extraño con Jscript y Checkbox  (Leído 2,508 veces)
sodark

Desconectado Desconectado

Mensajes: 81


Ver Perfil WWW
Funcionamiento extraño con Jscript y Checkbox
« en: 22 Febrero 2016, 14:50 pm »

El otro dia haciendo un formulario para una web del trabajo me encontre con que cuando chequeaba el checkbox, este se deschequeaba automaticamente.

Código
  1. function toggleDefinirGrups() {
  2. var isChecked = document.forms[0].elements["hihagrups"].checked;
  3. console.log("ESTA CHECKED: "+isChecked);
  4. if ( isChecked ) {
  5. // LO HEMOS ACTIVADO
  6. $("#afegirGrups").prop("disabled",false);
  7. } else {
  8. // ANTIMANAZAS CHECKER
  9. swal({
  10. title: $("#swal_delgrups_title").val() ,  
  11. text: $("#swal_delgrups_text").val() ,  
  12. type: "warning",  
  13. showCancelButton: true,  
  14. confirmButtonColor: "#DD6B55",  
  15. confirmButtonText: $("#swal_confirm").val(),  
  16. cancelButtonText: $("#swal_cancel").val(),  
  17. closeOnConfirm: false,  
  18. closeOnCancel: false
  19. }, function(isConfirm){
  20. if (isConfirm) {
  21. swal($("#swal_confirmed").val(), "", "success");  
  22. $("#afegirGrups").prop("disabled",true);
  23. $("#grups_definits").empty();
  24. } else {
  25. document.forms[0].elements["hihagrups"].checked = true; // Al haber cancelado, volvemos a marcarlo como checked!
  26. swal($("#swal_canceled").val(), "", "error");  
  27. }
  28. }
  29. );
  30. }

Ese es el código JScript

El codigo del formulario (la parte importante es esta):

Código
  1. <td align='left'>
  2. <input type='checkbox' id='hihagrups' class='form-control' name='hihagrups' onClick='toggleDefinirGrups(); return false;' value='S' >
  3.  


Fue quitarle el return false del argumento onClick y el problema desaparecio, pero me gustaria saber el porque de este motivo.

Código
  1. <td align='left'>
  2. <input type='checkbox' id='hihagrups' class='form-control' name='hihagrups' onClick='toggleDefinirGrups();' value='S' >
  3.  

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


En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Funcionamiento extraño con Jscript y Checkbox
« Respuesta #1 en: 22 Febrero 2016, 15:16 pm »

Cuando regresas false de un event handler cancelas el evento (si no es un evento de error, unload o mouseover).

https://html.spec.whatwg.org/multipage/webappapis.html#the-event-handler-processing-algorithm


En línea

sodark

Desconectado Desconectado

Mensajes: 81


Ver Perfil WWW
Re: Funcionamiento extraño con Jscript y Checkbox
« Respuesta #2 en: 22 Febrero 2016, 15:41 pm »

La cosa es que ese código como puedes ver en la función JS realiza mas tareas, entiendo pues que el evento que estoy cancelando es el check pero la función no la trata como un evento sino como la acción de un evento.

No? Por ello todo lo que realizo dentro de la función queda activado como tal, pero el checkbox sin embargo se resetea.
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Funcionamiento extraño con Jscript y Checkbox
« Respuesta #3 en: 22 Febrero 2016, 17:21 pm »

La cosa es que ese código como puedes ver en la función JS realiza mas tareas, entiendo pues que el evento que estoy cancelando es el check pero la función no la trata como un evento sino como la acción de un evento.

No? Por ello todo lo que realizo dentro de la función queda activado como tal, pero el checkbox sin embargo se resetea.

Lo que pasa es que cuando cancelas el evento de click para un checkbox ocurre esto:

Citar
The canceled activation steps consist of setting the checkedness and the element's indeterminate IDL attribute back to the values they had before the pre-click activation steps were run.

https://html.spec.whatwg.org/multipage/forms.html#checkbox-state-%28type=checkbox%29

Lo que significa que vuelve al estado inicial si es cancelado.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
users to log (JScript+WMI)
Scripting
winroot 0 2,056 Último mensaje 7 Agosto 2010, 20:48 pm
por winroot
Extraño funcionamiento de la red « 1 2 »
Redes
abgl_84 11 7,798 Último mensaje 22 Octubre 2011, 16:54 pm
por lobo79
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines