2016-07-29 9 views
0

Wenn der Benutzer die Größe des Dialogfelds ändert, führt er POST Dutzende Male aus. Gibt es eine Möglichkeit zu verhindern, dass $ .post ausgeführt wird, bis der Benutzer die Maustaste loslässt.Ausführungspost nach der Größenänderung (nicht wiederholt, wenn das Fenster in der Größe geändert wird)

dialogClass: 'fixed-dialog', 
    resize: function(event, ui) { 
    $(this).dialog("option", 
     ui.size.height + " x " + ui.size.width); 
    $.post("savelayout.php", { 
     menuheight: ui.size.height, 
     menuwidth: ui.size.width 
    }); 
    } 

Bearbeiten: Aktualisierte Code aus Beispiel entfernt, da es nicht funktioniert.

+0

http://alvarotrigo.com/blog/firing-resize-event-only-once-when-resizing-isfinished/ –

Antwort

0

Meine Lösung hier versucht zu überprüfen, ob eine weitere Größenänderung in 100 ms versucht wurde. Wenn nicht die Postleitzahl laufen.

var act; 
dialogClass: 'fixed-dialog', 
    resize: function(event, ui) { 
    clearTimeout(act); 
    act = setTimeout(function() { 
     $(this).dialog("option", 
     ui.size.height + " x " + ui.size.width); 
     $.post("savelayout.php", { 
     menuheight: ui.size.height, 
     menuwidth: ui.size.width 
     }); 
    }, 100); 
    }; 

Alternativ gibt es ein jQuery-Plugin: https://github.com/nielse63/jquery.resizeend, wenn Sie einen solchen Ansatz wollen.

+0

Es gibt also keine Möglichkeit, eine Stop-Funktion zu verwenden? Ich benutze keinen Timer. – michelle

+0

nein .. nicht dass ich bewusst bin. Check-in sagen 100ms ist meine beste Wette. – Iceman

+0

@michelle gibt es ein jquery plugin zu tun, was Sie wollen – Iceman

Verwandte Themen