Alerta de inicialização automática Fechar automaticamente


153

Minha necessidade é chamar o alerta quando eu clicar no botão Adicionar à lista de desejos e deve desaparecer o alerta em 2 segundos. Foi assim que tentei, mas o alerta desapareceu instantaneamente assim que apareceu. Não tenho certeza, onde está o erro .. Alguém pode me ajudar?

Script JS

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

Código 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>

Caixa de alerta:

<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>


Eu tentei esses fluxos .. mas não sei como implementar. : /
srikanth_naalla 16/04

Respostas:


276

Para um deslize suave:

$("#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
Não está funcionando na segunda vez que você clicou no botão. Por causa do alerta ('close') Se você usa slideUp (), está funcionando @ICanHasKittenz
Fatih Alp

Funciona bonito, mas o que é essa linha $ ("# success-alert"). Alert (); uso? Eu o removi e também funciona.
Roberto Sepúlveda Bravo

1
@ RobertoSepúlvedaBravo é para dar a funcionalidade de fechamento da caixa de alerta, mas você está certo, não é necessário aqui porque estamos usando o data-dimiss="alert" atributo Atualizará o script.
AyB

não funcionou para mim. Os outros exemplos abaixo aqui funcionaram bem, no entanto.
Terje Nesthus 21/09

@TerjeNesthus Você pode explicar o que exatamente não funcionou? O alerta não está subindo? Ou não está funcionando pela segunda vez? Posso saber a versão do seu bootstrap? Isso foi feito para o Bootstrap 3 e eu não os testei nas versões posteriores.
AyB

56

Usar um fadeTo()que está diminuindo para uma opacidade de 500 em 2 segundos no código "Eu posso ter Kittenz" não é legível para mim. Eu acho que é melhor usar outras opções como um atraso ()

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

41

Por que todas as outras respostas usam slideUpestá além de mim. Como estou usando as classes fadee inpara que o alerta desapareça quando fechado (ou após o tempo limite), não quero que ele "deslize para cima" e entre em conflito com isso.

Além do slideUpmétodo nem funcionou. O alerta em si não apareceu. Aqui está o que funcionou perfeitamente para mim:

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

1
Curto e doce
Nawaraj

21

Eu achei isso uma solução melhor

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

11

mais uma solução para isso Fecha ou desvanece automaticamente a mensagem de alerta de autoinicialização após 5 segundos:

Este é o código HTML usado para exibir a mensagem:

<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>


Essa é uma resposta muito boa, pois não se limita a mostrar a mensagem tru JS, a mensagem já pode ser exibida quando a página é carregada.
Guillermo Oramas R. 26/03

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

Onde os parâmetros fadeTo são fadeTo (velocidade, opacidade)


1

Tiggers automática e manualmente quando necessário

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

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

0

Esta é uma boa abordagem para mostrar animação dentro e fora usando jQuery

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

0

Controlador C #:

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

Página da navalha:

@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>
}

Qualquer fechamento automático de alerta:

<script type="text/javascript">
    $(".alert").delay(5000).slideUp(200, function () {
        $(this).alert('close');
    });
</script>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.