Foros del Web » Programando para Internet » Javascript » Frameworks JS »

[SOLUCIONADO] Evento onclick en CHECKBOX que solo entra al segundo

Estas en el tema de Evento onclick en CHECKBOX que solo entra al segundo en el foro de Frameworks JS en Foros del Web. Buenos días. me ocurre una cosa con este trocito de código, creo que debe ser un error de concepto propio mio. El caso es que ...
  #1 (permalink)  
Antiguo 29/12/2017, 10:38
 
Fecha de Ingreso: abril-2014
Ubicación: Almería
Mensajes: 58
Antigüedad: 4 años, 6 meses
Puntos: 2
Evento onclick en CHECKBOX que solo entra al segundo

Buenos días.

me ocurre una cosa con este trocito de código, creo que debe ser un error de concepto propio mio.

El caso es que solo ejecuta la petición asíncrona AJAX cuando pulso por segunda vez el checkbox.

¿Por qué puede estar ocurriendo esto?

Un saludo y muchas gracias.

Código HTML:
<input type="checkbox" id="confirmar"  name="confirmar" data-id="reserva" class="form-control" onclick="guardar_confirmar()"/> 
Código Javascript:
Ver original
  1. <script type="application/javascript">
  2.                        function guardar_confirmar() {
  3.  
  4.                            alert("dentro");
  5.                            var checkbox = document.getElementById("confirmar"),
  6.  
  7.                                ajax = function(url){
  8.                                    var xhr = window.XMLHttpRequest ?
  9.                                        new XMLHttpRequest() :
  10.                                        new ActiveXObject("Microsoft.XMLHTTP") ||
  11.                                        new ActiveXObject("Msxml2.XMLHTTP");
  12.  
  13.                                    xhr.open("GET", url, true);
  14.                                    xhr.send(null);
  15.                                };
  16.  
  17.                            checkbox.addEventListener("click", function(){
  18.                                var estado = this.checked ? 1 : 0, //Si está marcado, asigno 1 a 'estado', si no, 0
  19.                                    id = this.getAttribute("data-id"), //El valor del pseudo-atributo 'data-id'
  20.                                    url = "/admin/editar-detalle-cobro.php?estado=" + estado + "&idcheckbox=" + id + "&confirmar=1" + "$id=";
  21.                                alert(url);
  22.                                ajax(url); //Ejecuto la petición asíncrona, enviando los valores
  23.                            }, false);
  24.                        }
  25.                     </script>
  #2 (permalink)  
Antiguo 31/12/2017, 11:11
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.129
Antigüedad: 10 años, 7 meses
Puntos: 1001
Respuesta: Evento onclick en CHECKBOX que solo entra al segundo

ciertamente tienes error de concepto, no te funciona porque metes dentro de addEventListener la llamada ajax

ese esta fuera de lugar, prueba retirandolo y la funcion ajax sacandola... algo asi

Código Javascript:
Ver original
  1. function ajax(url){
  2.     var xhr = window.XMLHttpRequest ?
  3.   new XMLHttpRequest() :
  4.   new ActiveXObject("Microsoft.XMLHTTP") ||
  5.   new ActiveXObject("Msxml2.XMLHTTP");
  6.  
  7.   xhr.open("GET", url, true);
  8.   xhr.send(null);
  9. };
  10.  
  11. function guardar_confirmar() {
  12.     alert("dentro");
  13.   var checkbox = document.getElementById("confirmar"),
  14.     var estado = this.checked ? 1 : 0, //Si está marcado, asigno 1 a 'estado', si no, 0
  15.   id = this.getAttribute("data-id"), //El valor del pseudo-atributo 'data-id'
  16.   url = "/admin/editar-detalle-cobro.php?estado=" + estado + "&idcheckbox=" + id + "&confirmar=1" + "$id=";
  17.   alert(url);
  18.   ajax(url); //Ejecuto la petición asíncrona, enviando los valores
  19. }
__________________
Toda ayuda se proporciona exclusivamente en el foro, no skype, no mensajes privados u otro medio....
  #3 (permalink)  
Antiguo 31/12/2017, 12:31
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.387
Antigüedad: 3 años, 3 meses
Puntos: 253
Respuesta: Evento onclick en CHECKBOX que solo entra al segundo

com ya te dijeron, o llamas a la funcion desde el check o utilizas el observador, pero alli estas redundando, porque al hacer click en el check activas el observador que esta a la espera del click para ejecutar el ajax.
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 02/01/2018, 02:32
 
Fecha de Ingreso: abril-2014
Ubicación: Almería
Mensajes: 58
Antigüedad: 4 años, 6 meses
Puntos: 2
Respuesta: Evento onclick en CHECKBOX que solo entra al segundo

Muchas gracias,

estábais en lo cierto. Lo he solucionado así:

Código Javascript:
Ver original
  1. function guardar_confirmar(idcheckbox) {
  2.  
  3.                             var checkbox = document.getElementById(idcheckbox),
  4.  
  5.                                 ajax = function(url){
  6.                                     var xhr = window.XMLHttpRequest ?
  7.                                         new XMLHttpRequest() :
  8.                                         new ActiveXObject("Microsoft.XMLHTTP") ||
  9.                                         new ActiveXObject("Msxml2.XMLHTTP");
  10.  
  11.                                     xhr.open("GET", url, true);
  12.                                     xhr.send(null);
  13.                                 };
  14.                             var estado = checkbox.checked ? 1 : 0;
  15.                             var id = checkbox.getAttribute("id-vehiculo");
  16.                             var url = "/admin/editar-detalle-cobro.php?estado=" + estado + "&idcheckbox=" + idcheckbox + "&confirmar=1" + "&id=" + id;
  17.                             ajax(url);
  18.                         }

¿Qué os parece?
  #5 (permalink)  
Antiguo 02/01/2018, 18:18
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.129
Antigüedad: 10 años, 7 meses
Puntos: 1001
Respuesta: Evento onclick en CHECKBOX que solo entra al segundo

Siendo sincero no veo porque crear una función ajax si solo se utiliza en ese momento, por eso la habia sacado pero ya es tu gusto, cada quien tiene su forma de trabajo.
__________________
Toda ayuda se proporciona exclusivamente en el foro, no skype, no mensajes privados u otro medio....
  #6 (permalink)  
Antiguo 03/01/2018, 02:46
 
Fecha de Ingreso: abril-2014
Ubicación: Almería
Mensajes: 58
Antigüedad: 4 años, 6 meses
Puntos: 2
Respuesta: Evento onclick en CHECKBOX que solo entra al segundo

El caso es que si saco la función Ajax no realiza la petición... así que no sé...

Etiquetas: checkbox, entra, evento, onclick, segundo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:00.