jQuery automatisch speichern, während der Texteingabe
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
code
dank
date
datum
dialog
eingabe
machen
realisieren
sekunde
senden
server
tastendruck
test
text
textfeld
trab
url
versuchen
warte
warten
-
Moin Moin,
ich habe momentan ein Textfeld, welches, wenn es gefüllt wird, die Daten per AJAX an einen Server sendet, der diese abspeichert.
Momentan wird ein Request pro Tastendruck gemacht, was bei einem längeren Text den Server auf Trab hält und meine Logs zumüllt.
Macht jemand von euch etwas ähnliches?
Ich habe mir gedacht, ich warte einfach 3 Sekunden und sende dann erst den Request los, aber weiß nicht, wie ich das realisieren kann, dass der Timer immer wieder zurückgesetzt wird, wenn man tippt.
Bisher sieht mein Code so aus:
$(".new_comment_box").keyup(function() { var text_field = $(this); $.ajax({ url: "/", data: {new_comment:text_field.val()}, error: function() { $("#infodialog").html("There was an error saving your comment."); $("#infodialog").dialog("open"); } }); });
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wie wär's damit?
var old_time=0, time=0; $(".new_comment_box").keyup(function() { var text_field = $(this), date=new Date(), old_time=time, time=date.getTime(); if(old_time+60*3<time){ $.ajax({ url: "/", data: {new_comment:text_field.val()}, error: function() { $("#infodialog").html("There was an error saving your comment."); $("#infodialog").dialog("open"); } }); } });
-
So wie ich das Verstehe funktioniert das so:
=> Ich gebe ein: "test test test"
=> Ich warte eine Sekunde
=> Ich gebe ein: "test"
=> nichts passiert, da keine 3 Sekunden um sein
=> ich warte 3 Sekunden
=> nichts passiert, da das keyup nichtmehr aufgerufen wird
Also muss man vor der Eingabe des letzten Zeichens 3 Sekunden warten, damit gespeichert wird
oder verstehe ich das falsch? -
Hallo,
wenn ich dich richtig verstehe, dann möchtest du die Daten nur senden, wenn innerhalb von 3 Sekunden nichts weiter eingegeben wurde, oder?
Dann versuche mal setTimeout und clearTimeout z.B. so:
var handle=false; $(".new_comment_box").keyup(function() { var text_field = $(this); if (handle) window.clearTimeout(handle); handle = window.setTimeout(function(){ $.ajax({ url: "/", data: {new_comment:text_field.val()}, error: function() { $("#infodialog").html("There was an error saving your comment."); $("#infodialog").dialog("open"); } }); }, 3000); });
Gruß -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage