|
|
|
|
Strumenti |
01-08-2019, 12:47 | #1 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Bootstrap alert: usare lo stesso div per due messaggi consecutivi
Ciao ragazzi,
ho creato una semplice funzione che richiamo per visaulizzare dei messaggi all'utente: Codice:
function showMessageEvent(textToShow, cssClass) { $("#resultMessageEvent").fadeOut("slow", function () { $("#resultMessageEvent").addClass(cssClass); $("#resultMessageEvent").html(textToShow); }); $("#resultMessageEvent").show("slow").delay(3000).fadeOut("slow", function () { $("#resultMessageEvent").removeClass(cssClass); $("#resultMessageEvent").html(""); }); } Primo messaggio: showMessageEvent("Caricamento in corso...", "alert-warning"); Se la chiamata Ajax è success, il secondo messaggio: showMessageEvent("Evento aggiornato!", "alert-success"); Succede che vengono rimossi la classe e il test riferiti al caso warning e solo dopo viene visualizzato il div success senza testo! Come mai? Grazie. |
01-08-2019, 14:51 | #2 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2988
|
Ho buttato qua un jksfiddle di test https://jsfiddle.net/cm3g97j2/
Onestamente non ho capito cosa ti aspetti che faccia e che non fa.. |
02-08-2019, 08:20 | #3 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Grazie sempre!
Ho commentato alcune righe del tuo script riportandolo al mio caso https://jsfiddle.net/robertinosalemi/urw04h51/3/ Gli step che vorrei realizzare: 1. Viene visualizzato il primo messaggio 2. Nella funzione showMessageEvent è impostato un delay di 3 secondi, ma vorrei comunque che dopo 1 secondo, venga nascosto il primo e visualizzato il secondo... |
02-08-2019, 10:37 | #4 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2988
|
Scusa ma non comprendo: se metti un delay di 3 secondi come puoi impostare che vada via dopo 1 secondo?
vuoi che si nasconda di colpo mentre fa il fadeout dopo 1 secondo ? non comprendo proprio.. |
02-08-2019, 11:29 | #5 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Forse mi sono spiegato male, scusami.
Vorrei che: 1. l'utente clicca su Inserisci nel form 2. scatta una chiamata ajax che esegue i dovuti controlli e visualizza un messaggio del tipo "Caricamento in corso..." 3. se la chiamata torna success.... qualora il messaggio precedente è ancora visibile, viene nascosto e viene visualizzato il messaggio "Evento inserito". |
05-08-2019, 10:53 | #6 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 12
|
Non é la soluzione migliore, ma comunque devi fare uso delle Promises.
Se usi jQuery, se mi ricordo bene, le richieste AJAX ritornano una Promise. https://jsfiddle.net/aob4v1nj/ |
06-08-2019, 07:52 | #7 | |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2988
|
Quote:
Per fare quello che vuoi devi: chiamare la funzione show, e al suo interno quando è completata allora richiami lo script esterno che fa quello che deve fare e controllando quello che ti ritorna mostrare success oppure errore. Rapidamente dovrebbe essere Codice:
$( "#clickme" ).click(function() { $( "#book" ).show( "slow", function() { //qua dentro la funzione show ha finito, richiami lo script che fa i controlli: $.post( "test.php", { name: "John", time: "2pm" }) .done(function( data ) { if (data.controlloIsOk == 1){ $("#resultMessageEvent").html("OK VA TUTTO BENE. ANCHE CON FADEOUT"); } else { $("#resultMessageEvent").html("NO ERRORE " + data.messaggioErrore); } }); }); }); |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:35.