Chiusura automatica avviso Bootstrap


154

La mia necessità è di chiamare l'avviso quando faccio clic sul pulsante Aggiungi alla lista dei desideri e dovrebbe scomparire l'avviso in 2 secondi. È così che ho provato, ma l'avviso scompare all'istante non appena appare. Non sono sicuro di dove sia il bug. Qualcuno può darmi una mano?

JS Script

$(document).ready (function(){
   $("#success-alert").hide();
   $("#myWish").click(function showAlert() {
      $("#success-alert").alert();
      window.setTimeout(function () { 
         $("#success-alert").alert('close'); 
      }, 2000);             
   });      
});

Codice HTML:

<div class="product-options">
   <a id="myWish" href="" class="btn btn-mini">Add to Wishlist </a>
   <a href="#" class="btn btn-mini"> Purchase </a>
</div>

Casella di avviso:

<div class="alert alert-success" id="success-alert">
   <button type="button" class="close" data-dismiss="alert">x</button>
   <strong>Success!</strong>
   Product have added to your wishlist.
</div>


Ho provato questi flussi .. ma non sono sicuro di come implementarlo. : /
srikanth_naalla

Risposte:


276

Per uno slideup fluido:

$("#success-alert").fadeTo(2000, 500).slideUp(500, function(){
    $("#success-alert").slideUp(500);
});

$(document).ready(function() {
  $("#success-alert").hide();
  $("#myWish").click(function showAlert() {
    $("#success-alert").fadeTo(2000, 500).slideUp(500, function() {
      $("#success-alert").slideUp(500);
    });
  });
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

<div class="product-options">
  <a id="myWish" href="javascript:;" class="btn btn-mini">Add to Wishlist </a>
  <a href="" class="btn btn-mini"> Purchase </a>
</div>
<div class="alert alert-success" id="success-alert">
  <button type="button" class="close" data-dismiss="alert">x</button>
  <strong>Success! </strong> Product have added to your wishlist.
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>


3
Non funziona la seconda volta che hai fatto clic sul pulsante. A causa di un avviso ('chiudi') Se usi slideUp () funziona @ICanHasKittenz
Fatih Alp

Funziona benissimo, ma cos'è questa riga $ ("# success-alert"). Alert (); l'uso? L'ho rimosso e funziona anche.
Roberto Sepúlveda Bravo,

1
@ RobertoSepúlvedaBravo è per dare la stretta funzionalità alla casella di avviso ma hai ragione, non è necessario qui perché stiamo usando l' data-dimiss="alert" attributo. Aggiornerà lo script.
AyB

Non ha funzionato per me. Gli altri esempi qui sotto hanno funzionato bene, tuttavia.
Terje Nesthus,

@TerjeNesthus Puoi spiegare cosa non ha funzionato esattamente? L'allerta non sta scorrendo? O non funziona la seconda volta? Posso conoscere la versione del tuo bootstrap? Questo doveva essere per Bootstrap 3 e non li ho testati nelle versioni successive.
AyB

56

L'uso di un valore fadeTo()che sta svanendo a un'opacità di 500 in 2 secondi nel codice "I Can Has Kittenz" non è leggibile per me. Penso che sia meglio usare altre opzioni come un delay ()

$(".alert").delay(4000).slideUp(200, function() {
    $(this).alert('close');
});

42

Perché tutte le altre risposte usano slideUpè appena oltre me. Dato che sto usando le classi fadee inper far svanire l'avviso quando chiuso (o dopo il timeout), non voglio che si "sposti" e sia in conflitto con quello.

Inoltre il slideUpmetodo non ha nemmeno funzionato. L'avviso stesso non è stato mostrato affatto. Ecco cosa ha funzionato perfettamente per me:

$(document).ready(function() {
    // show the alert
    setTimeout(function() {
        $(".alert").alert('close');
    }, 2000);
});

1
Breve e dolce
Nawaraj,

21

Ho trovato che questa era una soluzione migliore

$(".alert-dismissible").fadeTo(2000, 500).slideUp(500, function(){
    $(".alert-dismissible").alert('close');
});

11

un'altra soluzione per questo Chiudi automaticamente o dissolve il messaggio di avviso bootstrap dopo 5 secondi:

Questo è il codice HTML utilizzato per visualizzare il messaggio:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<div class="alert alert-danger">
This is an example message...
</div>


<script type="text/javascript">

$(document).ready(function () {
 
window.setTimeout(function() {
    $(".alert").fadeTo(1000, 0).slideUp(1000, function(){
        $(this).remove(); 
    });
}, 5000);
 
});
</script>


Questa è una risposta molto bella perché non si limita a mostrare il messaggio vero JS, il messaggio potrebbe già essere visualizzato al caricamento della pagina.
Guillermo Oramas R.

1
$("#success-alert").fadeTo(2000, 500).slideUp(500, function(){
    $("#success-alert").alert('close');
});

Dove dissolvenza I parametri sono dissolvenza (velocità, opacità)


1

Si attiva automaticamente e manualmente quando necessario

$(function () {
    TriggerAlertClose();
});

function TriggerAlertClose() {
    window.setTimeout(function () {
        $(".alert").fadeTo(1000, 0).slideUp(1000, function () {
            $(this).remove();
        });
    }, 5000);
}

0

Questo è un buon approccio per mostrare dentro e fuori l'animazione usando jQuery

  $(document).ready(function() {
      // show the alert
      $(".alert").first().hide().slideDown(500).delay(4000).slideUp(500, function () {
         $(this).remove(); 
      });
  });

0

Controller C #:

var result = await _roleManager.CreateAsync(identityRole);
   if (result.Succeeded == true)
       TempData["roleCreateAlert"] = "Added record successfully";

Pagina del rasoio:

@if (TempData["roleCreateAlert"] != null)
{
    <div class="alert alert-success">
        <a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
        <p>@TempData["roleCreateAlert"]</p>
    </div>
}

Chiusura automatica di qualsiasi avviso:

<script type="text/javascript">
    $(".alert").delay(5000).slideUp(200, function () {
        $(this).alert('close');
    });
</script>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.