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>


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>


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');
});

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);
});

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');
});

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>


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)


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);
}

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(); 
      });
  });

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>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.