JQuery - Funcion ajax se ejecuta mas de una vez al hacer click

 
Vista:
Imágen de perfil de cristian

Funcion ajax se ejecuta mas de una vez al hacer click

Publicado por cristian (12 intervenciones) el 16/05/2017 18:55:23
Buenas ,tengo el siguiente codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$("#actualizar").click(function(){
 
//        $(".elementosprodtr").find("input").attr("value",4);
        $('.elementosprodtr').each(function(indice, elemento) {
 
            var id = $(elemento).attr("id").split("-")[1];
            var cantidad2 = $("#cantidad-"+id).val();
 
            var codigo2 = $("#codi-"+id).val();
 
 
    {
        $.get(
                "index.php?controller=master&action=update_elementos_salida",
        {
                            cantidad:cantidad2,
                            id:id,
                            codigo:codigo2
 
 
                        },
 
                function (resp) {
                  if (resp.success)
                    {
                        alert("Salida Exitosa");
                        location.reload();
 
 
 
 
                    } else
                    {
 
                       (alertify.error('No se pudo modificar'));
                    }
 
                },
                "json"
                );
 
    }
    });
    });

el problema es que si hago click muy rapido envia la peticion por get vaias veces,,quiero que solo la envie una vez y recargue la pagina
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 142
Plata
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Funcion ajax se ejecuta mas de una vez al hacer click

Publicado por Horroroso (65 intervenciones) el 16/05/2017 22:20:46
Hola,

Puedes bloquear el boton.

Primero crea una extension para JQuery:
1
2
3
4
5
6
7
jQuery.fn.extend({
	disable: function (state) {
		return this.each(function () {
			this.disabled = state;
		});
	}
});
Luego deshabilita el boton al darle click:
1
2
$("#actualizar").click(function(){
        $(this).disable(true);

Y listo.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de cristian

Funcion ajax se ejecuta mas de una vez al hacer click

Publicado por cristian (12 intervenciones) el 16/05/2017 22:50:18
pero si no ingresan el formulario y le dan click?

bloquearia el boton y ya no dejaria hacer nada?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willian
Val: 4
Ha disminuido su posición en 9 puestos en JQuery (en relación al último mes)
Gráfica de JQuery

Funcion ajax se ejecuta mas de una vez al hacer click

Publicado por Willian (2 intervenciones) el 16/05/2017 23:02:10
Al Final de Tu .GET volves a habilitar el Boton

Segun tu codigo seria algo como ....
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$.get(
    "index.php?controller=master&action=update_elementos_salida", {
        cantidad: cantidad2,
        id: id,
        codigo: codigo2
 
 
    },
 
    function(resp) {
        if (resp.success) {
            alert("Salida Exitosa");
            location.reload();
        } else {
            (alertify.error('No se pudo modificar'));
        }
//AQUI VOLVER A HABILITAR EL BTN
    },
    "json"
);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 142
Plata
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Funcion ajax se ejecuta mas de una vez al hacer click

Publicado por Horroroso (65 intervenciones) el 16/05/2017 23:25:49
Exacto, se vuelve a habilitar. Incluso, no lo habia incluido porque el location.reload() haría que se habilite de nuevo. pero si hay algun error, quedaría deshabilitado. asi que si sigues la sugerencia quedaria resuelto tu problema.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willian
Val: 4
Ha disminuido su posición en 9 puestos en JQuery (en relación al último mes)
Gráfica de JQuery

Funcion ajax se ejecuta mas de una vez al hacer click

Publicado por Willian (2 intervenciones) el 16/05/2017 23:28:42
NO me atente hasta el final tenes razon por un lado el reload volveria a cargar la pagina refrescando el estado del Boton.

pero si falla quedaria colgado , asi que si no hay otras cosas en este codigo el codigo para habilitar lo podes usar solo en el ELSE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar