Vinnaren i pepparkakshustävlingen!
2017-12-13, 08:19
  #1
Medlem
Knarkads avatar
Jag har ett script i jquery som skickar mitt formulär. Jag skulle vilja ha en delay på 2 sekunder. Se kod:
HTML-kod:
<script>
function submitForm() {
   document.getElementById("loading").style.visibility = "visible";
           
  var form_data = new FormData(document.getElementById("myform"));
  form_data.append("label", "WEBUPLOAD");
  $.ajax({
      url: "register.php",
      type: "POST",
      data: form_data,
      processData: false,  // tell jQuery not to process the data
      contentType: false   // tell jQuery not to set contentType
  }).done(function( data ) {
    console.log(data);
    //Perform ANy action after successfuly post data
   $("#error").html("<p><span style='color:#cc0000'>Status:</span> Ärende inlagt!</p> ");
   document.getElementById("loading").style.visibility = "hidden";
   document.getElementById("myform").reset();
   $('#footer').load('count.php').fadeIn("slow");
       
  });
  return false;     
}
</script>
Vid "submit" så sker "document.getElementById("loading").style.visibili ty = "visible";" där min lilla laddnings-indikator visas. Denna skulle jag vilja tvinga visas i 2 sekunder innan scriptet går till success.

Finns det något bra sätt att lösa detta på?
Citera
2017-12-13, 08:59
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av Knarkad
Jag har ett script i jquery som skickar mitt formulär. Jag skulle vilja ha en delay på 2 sekunder. Se kod:
HTML-kod:
<script>
function submitForm() {
   document.getElementById("loading").style.visibility = "visible";
           
  var form_data = new FormData(document.getElementById("myform"));
  form_data.append("label", "WEBUPLOAD");
  $.ajax({
      url: "register.php",
      type: "POST",
      data: form_data,
      processData: false,  // tell jQuery not to process the data
      contentType: false   // tell jQuery not to set contentType
  }).done(function( data ) {
    console.log(data);
    //Perform ANy action after successfuly post data
   $("#error").html("<p><span style='color:#cc0000'>Status:</span> Ärende inlagt!</p> ");
   document.getElementById("loading").style.visibility = "hidden";
   document.getElementById("myform").reset();
   $('#footer').load('count.php').fadeIn("slow");
       
  });
  return false;     
}
</script>
Vid "submit" så sker "document.getElementById("loading").style.visibili ty = "visible";" där min lilla laddnings-indikator visas. Denna skulle jag vilja tvinga visas i 2 sekunder innan scriptet går till success.

Finns det något bra sätt att lösa detta på?
Du skulle ju kunna ha en setTimeout på skickandet liksom?

https://www.w3schools.com/jsref/met_win_settimeout.asp
Citera
2017-12-13, 10:30
  #3
Medlem
Soluss avatar
Citat:
Ursprungligen postat av Proton
Du skulle ju kunna ha en setTimeout på skickandet liksom?

https://www.w3schools.com/jsref/met_win_settimeout.asp
Något sådant här borde fungera:

Kod:
setTimeout(submitForm, 2000);

Det är vad jag hade gjort åtminstone. Jag tror inte att man ska krångla till det i onödan.
Citera
2018-02-16, 21:17
  #4
Medlem
Att fördröja själva skickandet är inte optimalt, det leder till ytterligare fördröjning i onödan. Det du vill uppnå kan sammanfattas så här:

Utför request och gå vidare med success, MEN tidigast efter 2 sekunder

Jag skulle implementera det med två promises, ett som resolvar när requestet är färdigt och ett annat som resolvar sig självt efter 2 sekunder. Sen fortsätter man med success när båda dessa har resolvat.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback