Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Mostrar un mensaje en un span por unos 10 segundos

Estas en el tema de Mostrar un mensaje en un span por unos 10 segundos en el foro de Javascript en Foros del Web. Hola amigos, tengo un input en el cual tengo el evento OnBlur el cual me llama una función que por medio de ajax hace un ...
  #1 (permalink)  
Antiguo 03/09/2014, 20:26
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Pregunta Mostrar un mensaje en un span por unos 10 segundos

Hola amigos, tengo un input en el cual tengo el evento OnBlur el cual me llama una función que por medio de ajax hace un update a mi tabla de la base de datos esto ya funciona bien pero quisiera que cuando se haga la actualización a mi base de datos se muestre un mensaje que indique que el cambio se hizo y que se muestre unos 10 segundos y luego se oculte, este es el código html de input:
Código HTML:
Ver original
  1. <input name="NombreEmpresa" type="text" required class="datosmenor" id="NombreEmpresa" onBlur="actualiza(<?php echo $idperfil; ?>, this.id, this.value)" value="<?php echo $fila['NombreEmpresa']; ?>">

Luego el Onblur llama a la función actualiza y le envía tres parámetros, aquí la función:
Código Javascript:
Ver original
  1. function actualiza(id, columna, valor)
  2. {
  3.     var actualizar;
  4.     if(window.XMLHttpRequest)
  5.     {
  6.         actualizar = new XMLHttpRequest();
  7.     }
  8.     else
  9.     {
  10.         actualizar = new ActiveXObject("Microsoft.XMLHTTP");
  11.     }
  12.     actualizar.onreadystatechange=function()
  13.     {
  14.         if(actualizar.readyState==4 && actualizar.status==200)
  15.         {
  16.            
  17.             document.getElementById("Mensaje").style.color = "White";
  18.             document.getElementById("Mensaje").style.backgroundColor = "Green";
  19.             document.getElementById("Mensaje").style.padding = "6px";
  20.             document.getElementById("Mensaje").style.marginLeft = "250px";
  21.             document.getElementById("Mensaje").style.borderRadius = "5px";
  22.             document.getElementById("Mensaje").style.boxShadow = "1px 1px 5px Black";
  23.             document.getElementById("Mensaje").innerHTML=actualizar.responseText;
  24.         }
  25.     }
  26.     actualizar.open("GET","actualiza.php?puesto="+id+"&col="+columna+"&val="+valor,true);
  27.     actualizar.send();
  28. }

esta función llama al archivo actualiza.php que es el encargado de hacer el update:

Código PHP:
Ver original
  1. include("../Conexion/conexion.php");
  2.    
  3.     $id = mysqli_real_escape_string($conexion, $_GET['puesto']);
  4.     $columna = mysqli_real_escape_string($conexion, $_GET['col']);
  5.     $valor = mysqli_real_escape_string($conexion, $_GET['val']);
  6.    
  7.     $sql = "UPDATE PerfilPuesto SET $columna = '$valor' WHERE IdPuesto = '$id'";
  8.     $consulta = mysqli_query($conexion, $sql) or die("Error al ejecutar la query: ".mysqli_error($conexion));
  9.    
  10.     if(mysqli_affected_rows($conexion) == 1)
  11.     {
  12.         echo "Registro Actualizado";
  13.     }
  14.     elseif(mysqli_affected_rows($conexion) == 0)
  15.     {
  16.         echo "";
  17.     }
  18.     elseif(mysqli_affected_rows($conexion) != 0 || mysqli_affected_rows($consulta) != 1)
  19.     {
  20.         echo "Se genero un error";
  21.     }

Con lo que tengo se muestra el mensaje pero no se quita solo si actualizo la página, además si por equivocación hago clic en el input pero no cambio nada aparece un cuadrito con las propiedades css que le puse al span por medio de javascript
  #2 (permalink)  
Antiguo 03/09/2014, 21:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Mostrar un mensaje en un span por unos 10 segundos

Para ocultar al <span> luego de transcurrido un determinado tiempo, puedes usar el método setTimeout, el cual ejecuta una función transcurrido un determinado tiempo dado en milésimas de segundo.

Código Javascript:
Ver original
  1. setTimeout(function(){
  2.     document.getElementById("Mensaje").style.display = "none";
  3. }, 10000);

Con respecto a lo otro, creo que tendrías un mayor control si la función se ejecutara al pulsar alguna tecla mientras el campo tenga el enfoque, por ejemplo, la tecla ENTER. También podrías colocar un mensaje de confirmación para proceder con la ejecución de la función, usando para ello el método confirm.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 04/09/2014, 13:42
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Mostrar un mensaje en un span por unos 10 segundos

Cita:
Iniciado por Alexis88 Ver Mensaje
Para ocultar al <span> luego de transcurrido un determinado tiempo, puedes usar el método setTimeout, el cual ejecuta una función transcurrido un determinado tiempo dado en milésimas de segundo.

Código Javascript:
Ver original
  1. setTimeout(function(){
  2.     document.getElementById("Mensaje").style.display = "none";
  3. }, 10000);

Con respecto a lo otro, creo que tendrías un mayor control si la función se ejecutara al pulsar alguna tecla mientras el campo tenga el enfoque, por ejemplo, la tecla ENTER. También podrías colocar un mensaje de confirmación para proceder con la ejecución de la función, usando para ello el método confirm.

Saludos
Gracias por la ayuda pero la verdad no entiendo bien lo que me dices en el caso de colocar el setimeuot no funciona no se si lo coloque bien lo puse así:

Código Javascript:
Ver original
  1. function actualiza(id, columna, valor)
  2. {
  3.     var actualizar;
  4.     if(window.XMLHttpRequest)
  5.     {
  6.         actualizar = new XMLHttpRequest();
  7.     }
  8.     else
  9.     {
  10.         actualizar = new ActiveXObject("Microsoft.XMLHTTP");
  11.     }
  12.     actualizar.onreadystatechange=function()
  13.     {
  14.         if(actualizar.readyState==4 && actualizar.status==200)
  15.         {
  16.            
  17.             document.getElementById("Mensaje").style.color = "White";
  18.             document.getElementById("Mensaje").style.backgroundColor = "Green";
  19.             document.getElementById("Mensaje").style.padding = "6px";
  20.             document.getElementById("Mensaje").style.marginLeft = "250px";
  21.             document.getElementById("Mensaje").style.borderRadius = "5px";
  22.             document.getElementById("Mensaje").style.boxShadow = "1px 1px 5px Black";
  23.             document.getElementById("Mensaje").innerHTML=actualizar.responseText;
  24.             setTimeout(function()
  25.             {
  26.                 document.getElementById("Mensaje").style.display = "none";
  27.             }, 10000);
  28.         }
  29.     }
  30.     actualizar.open("GET","actualiza.php?puesto="+id+"&col="+columna+"&val="+valor,true);
  31.     actualizar.send();
  32. }

ahora lo de conforn no lo se pero voy a investigar esta afunción muchas gracias.
  #4 (permalink)  
Antiguo 04/09/2014, 14:02
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Mostrar un mensaje en un span por unos 10 segundos

¿No se llega a ocultar el elemento? Qué extraño. Prueba colocando esto en la función y fíjate en la consola (en Chrome, pulsa F12 y luego selecciona 'Console').

Código Javascript:
Ver original
  1. setTimeout(function(){
  2.     document.getElementById("Mensaje").style.display = "none";
  3.     console.log(document.getElementById("Mensaje").style.display);
  4. }, 10000);

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 06/09/2014, 22:47
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Mostrar un mensaje en un span por unos 10 segundos

Muchas gracias ya funcionó pero 10 segundos es mucho tiempo asi que lo deje en 3 segundos.

Etiquetas: ajax, consulta+sql, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:06.