Alerta Bootstrap Cierre automático

153

Mi necesidad es llamar a la alerta cuando hago clic en el botón Agregar a la lista de deseos y debería desaparecer la alerta en 2 segundos. Así es como lo intenté, pero la alerta desaparece instantáneamente tan pronto como aparece. No estoy seguro, dónde está el error ... ¿Alguien puede ayudarme?

JS Script

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

Cuadro 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>
srikanth_naalla
fuente
Probé estos flujos ... pero no estoy seguro de cómo implementarlos. : /
srikanth_naalla

Respuestas:

276

Para un deslizamiento 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>

AyB
fuente
3
No funciona la segunda vez que hace clic en el botón. Debido a la alerta ('cerrar') Si usa slideUp () funciona @ICanHasKittenz
Fatih Alp
Funciona hermoso, pero ¿qué es esta línea $ ("# Success-alert"). Alert (); ¿uso? Lo he eliminado y también funciona.
Roberto Sepúlveda Bravo
1
@ RobertoSepúlvedaBravo es para darle la funcionalidad cercana al cuadro de alerta pero tiene razón, no es necesario aquí porque estamos usando el data-dimiss="alert" atributo. Se actualizará el script.
AyB
No funciono para mi. Sin embargo, los otros ejemplos a continuación aquí funcionaron bien.
Terje Nesthus
@TerjeNesthus ¿Puedes explicar qué no funcionó exactamente? ¿La alerta no se desliza hacia arriba? ¿O no funciona la segunda vez? ¿Puedo saber la versión de tu bootstrap? Esto estaba destinado a ser para Bootstrap 3 y no los he probado en las versiones posteriores.
AyB
56

Usar un fadeTo()código que se desvanece a una opacidad de 500 en 2 segundos en el código de "I Can Has Kittenz" no me es legible. Creo que es mejor usar otras opciones como un retraso ()

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

Por qué todas las otras respuestas usan slideUpestá más allá de mí. Como estoy usando las clases fadey inpara que la alerta se desvanezca cuando se cierra (o después del tiempo de espera), no quiero que se "deslice" y entre en conflicto con eso.

Además el slideUpmétodo ni siquiera funcionó. La alerta en sí no se mostró en absoluto. Esto es lo que funcionó perfectamente para mí:

$(document).ready(function() {
    // show the alert
    setTimeout(function() {
        $(".alert").alert('close');
    }, 2000);
});
ADTC
fuente
1
Corto y dulce
Nawaraj
21

Encontré que esta es una mejor solución

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

Una solución más para esto Cerrar o desvanecer automáticamente el mensaje de alerta de arranque después de 5 segundos:

Este es el código HTML utilizado para mostrar el mensaje:

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

Divyesh Kanzariya
fuente
Esta es una respuesta muy buena porque no se limita a mostrar el mensaje tru JS, el mensaje ya podría mostrarse cuando se carga la página.
Guillermo Oramas R.
1
$("#success-alert").fadeTo(2000, 500).slideUp(500, function(){
    $("#success-alert").alert('close');
});

Donde los parámetros fadeTo son fadeTo (velocidad, opacidad)

Marwah Abdelaal
fuente
1

Tiggers automática y manualmente cuando sea necesario

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

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

Este es un buen enfoque para mostrar animación dentro y fuera usando jQuery

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

Controlador C #:

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

Página de afeitar:

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

Cualquier alerta de cierre automático:

<script type="text/javascript">
    $(".alert").delay(5000).slideUp(200, function () {
        $(this).alert('close');
    });
</script>
RM Shahidul Islam Shahed
fuente