2016-04-24 15 views
0

hat nur etwas Shake-Effekt hinzugefügt, wenn Benutzer Formular an den Eingaben senden, die nicht voll sind.jQuery UI - verhindern, dass Shake-Effekt mehrere Male ausgelöst wird

Aber wenn Benutzer mehrmals auf Senden Schaltfläche drücken der Shake-Effekt viele Male ausgelöst.

Wie kann ich verhindern, dass es mehr als einmal ausgelöst wird?

stop() - nicht funktioniert.

clearQueue() - stoppen Sie es, auch wenn es von seinem ersten Platz auf der Seite verschoben wird.

Das ist, was ich kam mit:

$(this).effect("shake"); 

Thanks :)

Antwort

0

wenn Sie eine zusätzliche Variablen verwenden Sie ein Flag verwenden können:

first_submit = true 

if(first_submit){ 
    first_submit = false 
    $(this).effect("shake"); 
} 
0

Sie könnten eine Variable erstellen um den Effekt einzustellen ist aktiv (läuft). Wenn Ihr Submit-Call von einem Callback abgefangen wird, verifizieren Sie, ob es wahr ist, wenn Sie ja zurückkommen. Verhindern von einem anderen Anruf.

Im Effekt Callback (Erfolg) setzen Sie zB die Variable false. Das ist der Zyklus.

Ich habe eine Erweiterung für den Effekt hinzugefügt, es ist Erfolg zu Rückruf, schau mal hier: What is the true way of adding callback functionality to custom JQuery Animation?

Etwas wie:

// Your new control 
 
var active = false; 
 

 
// Extending callback functionality to the animation 
 
$.fn.shake = function (times, distance, duration, callback) { 
 
    return this.css({ position: 'relative' }).each(function() {    
 
     for (var i = 0, t = duration/times; i < times; i+= 1) { 
 
      $(this). 
 
       animate({ left: -distance }, t/3). 
 
       animate({ left: distance }, t/3). 
 
       animate({ left:   0 }, t/4); 
 
     } 
 

 
     $(this).show(callback); 
 
    }); 
 
}; 
 

 
// DOM load 
 
$(document).ready(function(){ 
 
    
 
    // Triggering form the event 
 
    $('#form_ID').submit({function(){ 
 
    
 
    if(active == true) 
 
     return false; 
 
    
 
    // trigger your event.. 
 
    shake(5, 10, 500, function() { 
 
     $('#your_component_ID').removeClass('shaking'); 
 
    }); 
 
    }); 
 
});

Ich denke, man einen Blick in diese nehmen könnte Beitrag auch: jQuery prevent multiple clicks until animation is done

Verwandte Themen