Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] alert () en un label

Estas en el tema de alert () en un label en el foro de Javascript en Foros del Web. Hola a todos tengo un formulario donde relleno datos de una persona en el cual quisiera hacer obviamente controles, la forma de controlar es a ...
  #1 (permalink)  
Antiguo 13/08/2014, 17:38
 
Fecha de Ingreso: abril-2013
Ubicación: Puerto Rico (Mnes)
Mensajes: 20
Antigüedad: 11 años
Puntos: 0
Pregunta alert () en un label

Hola a todos tengo un formulario donde relleno datos de una persona en el cual quisiera hacer obviamente controles, la forma de controlar es a traves de mensajes pero en un label y eso es lo que no logro hacer y no pude encontrar a alguien que tenga mi misma idea o soy el unico que no tiene ni idea de como se hace que estoy buscando cualquier cosa .
Por ejemplo el usuario no ingresa el nombre en una caja de texto y aprieta el boton "enviar" lo que se quiere hacer es darle un mensaje al lado del cuadro de texto indicandole que tiene que rellenar ese cuadro de texto con un label.
En vez de hacerlo con un mensaje cuadrado como lo hace el alert de javaScript lo quiero hacer con un mensaje en un label al lado de la cajita de texto :)
Por favor si alguien me tira una idea un link o algo sera de gran ayuda y estare muy agradecido.
Desde ya muchas gracias

Última edición por Shionix; 13/08/2014 a las 18:23 Razón: Falta de explicación
  #2 (permalink)  
Antiguo 13/08/2014, 18: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: alert () en un label

Podrías colocar etiquetas al costado de cada caja de texto, cada una conteniendo el mensaje que quieres mostrar, luego, desde la hoja de estilos, ocultas las etiquetas y cuando vayas a realizar la validación en JavaScript, muestras las etiquetas cuyas cajas de texto relacionadas se encuentren vacías. Para que no tengas que mostrar/ocultar cada etiqueta manualmente, asígnales una clase en común para que las afectes en conjunto.

Código HTML:
Ver original
  1. <form id = "ejemplo">
  2.     <section>
  3.         <label for = "nombre">Nombre:</label>
  4.         <input type = "text" name = "nombre" />
  5.         <label class = "aviso">Debe de ingresar su nombre</label>
  6.     </section>
  7.     <section>
  8.         <label for = "edad">Edad:</label>
  9.         <input type = "text" name = "edad" />
  10.         <label class = "aviso">Debe de ingresar su edad</label>
  11.     </section>
  12.     <input type = "submit" value = "Procesar" />
  13. </form>

Código CSS:
Ver original
  1. .aviso{
  2.     display: none;
  3. }

Código Javascript:
Ver original
  1. var formulario = document.getElementById("ejemplo"), //El formulario
  2.     elementos = formulario.elements, //Sus elementos
  3.     avisos = document.getElementsByClassName("aviso"), //Las etiquetas
  4.     total = elementos.length; //El total de elementos del fomurlario
  5.  
  6. formulario.addEventListener("submit", function(event){
  7.     var valido = true;
  8.     event.preventDefault();
  9.    
  10.     for (var i = 0; i < total; i++){
  11.         if (!elementos[i].value.length){
  12.             avisos[i].style.display = "inline-block";
  13.             valido = false;
  14.         }
  15.         else{
  16.             if (elementos[i].type != "submit"){
  17.                 avisos[i].style.display = "none";
  18.             }
  19.         }
  20.     }
  21.    
  22.     if (valido){
  23.         this.submit();
  24.     }
  25. }, false);

Cuando se realiza el envío de los datos del formulario para su procesamiento (evento submit), lo cancelo con el método preventDefault, declaro una variable que me servirá como comodín para saber si se llenaron todos los campos del formulario y luego procedo a evaluar a cada elemento del formulario, iniciando con el valor booleano true. Si este no posee datos, muestro a la etiqueta equivalente al número del elemento con respecto al total que contiene el formulario, es decir, si la caja de la edad es el segundo elemento del formulario, se tomará a la segunda etiqueta de aviso que es la que le corresponde y la mostramos, además, cambiamos el valor de nuestro comodín a false. Sin embargo, si la caja de texto contiene datos, ocultamos la respectiva etiqueta de aviso, verificando antes que este elemento no sea el botón de envío.

Finalmente, si el valor de nuestro comodín sigue siendo true, es decir, si todas las cajas de texto contienen valores, por lo cual nunca se produjo el cambio del valor del comodín, procedo a enviar a los del formulario para que se procesen.

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 13/08/2014, 18:55
 
Fecha de Ingreso: abril-2013
Ubicación: Puerto Rico (Mnes)
Mensajes: 20
Antigüedad: 11 años
Puntos: 0
Respuesta: alert () en un label

Hola Alexis desde ya Muchas gracias por tu ayuda :) no me funciona :/ pero creo que es por un error mio seguro, te muestro como lo he dejado.
Formulario
Código HTML:
Ver original
  1.    <head>   <script language="javascript" src="Validacion3.js"></script></head>
  2.    <body>
  3.     <form id = "ejemplo">
  4.         <section>
  5.             <label for = "nombre">Nombre:</label>
  6.             <input type = "text" name = "nombre" />
  7.             <label class = "aviso">Debe de ingresar su nombre</label>
  8.         </section>
  9.         <section>
  10.             <label for = "edad">Edad:</label>
  11.             <input type = "text" name = "edad" />
  12.             <label class = "aviso">Debe de ingresar su edad</label>
  13.         </section>
  14.         <input type = "submit" value = "Procesar" />
  15.     </form>
  16.     </body>
  17.     </html>

Código CSS:
Ver original
  1. <style type="text/css">
  2.       .aviso{
  3.         display: none;
  4.     }
  5.  
  6.     </style>

Archivo validacion3.js

Código Javascript:
Ver original
  1. var formulario = document.getElementById("ejemplo"), //El formulario
  2.         elementos = formulario.elements, //Sus elementos
  3.         avisos = document.getElementsByClassName("aviso"), //Las etiquetas
  4.         total = elementos.length; //El total de elementos del fomurlario
  5.      
  6.     formulario.addEventListener("submit", function(event){
  7.         event.preventDefault();
  8.         var valido = true;
  9.      
  10.         for (var i = 0; i < total; i++){
  11.             if (!elementos[i].value.length){
  12.                 avisos[i].style.display = "inline-block";
  13.                 valido = false;
  14.             }
  15.             else{
  16.                 avisos[i].style.display = "none";
  17.             }
  18.         }
  19.        
  20.         if (valido){
  21.             this.submit();
  22.         }
  23.     }, false);
Creo que lo dividi bien no? Al formulario y al Css lo puse junto para no hacer un archivo nuevo css por 3 renglones nada mas
  #4 (permalink)  
Antiguo 13/08/2014, 19:06
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: alert () en un label

Esto:

Código HTML:
Ver original
  1. <script language="javascript" src="Validacion3.js"></script>

Colócalo justo antes de la etiqueta </body>, de este modo, los elementos se verán afectados por el código JS. Sucede que la carga del código ocurre de arriba hacia abajo, por lo que al cargar el código JS antes que los elementos del DOM, toda la validación que hicimos no servirá ya que no puede afectar a elementos que aún no han cargado.

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 14/08/2014, 09:28
 
Fecha de Ingreso: abril-2013
Ubicación: Puerto Rico (Mnes)
Mensajes: 20
Antigüedad: 11 años
Puntos: 0
Respuesta: alert () en un label

Hola Alexis Muchas gracias por el aguante :D pero no me funciona hice lo que me dijiste (colocar el codigo dentro del body) pero de igual manera no funciona. Mientras estaba tratando de hacer que funcione se me ocurrió colocar alert() en varios lados para ver que pasaba dejandolo así
Código Javascript:
Ver original
  1. alert("sadassadsa");
  2.  
  3.   var formulario = document.getElementById("ejemplo"), //El formulario
  4.         elementos = formulario.elements; //Sus elementos
  5.         avisos = document.getElementsByClassName("aviso"); //Las etiquetas
  6.         total = elementos.length; //El total de elementos del fomurlario
  7.        
  8.     formulario.addEventListener("submit", function(event){
  9.         event.preventDefault();
  10.         var valido = true;
  11.      
  12.         for (var i = 0; i < total; i++){
  13.             if (!elementos[i].value.length){
  14.                 avisos[i].style.display = "inline-block";
  15.                 alert("Falso");
  16.                 valido = false;
  17.             }
  18.             else{
  19.                 avisos[i].style.display = "none";
  20.                 alert("Verdadero");
  21.             }
  22.         }
  23.        
  24.         if (valido){
  25.             alert("valido");
  26.             this.submit();
  27.         }
  28.     }, false);

Y lo que pude comprobar es que llega al archivo Validacion3.js pero no hace el resto (lo he comprobado colocando los alert())
Estuve pensando si por ahí le falta un "return" al formulario pero no se si estoy en acierto porque el archivo Validacion3.js tiene una funcion que ya hace de retorno por si solo.
La verdad es que no se que le puede faltar :/
  #6 (permalink)  
Antiguo 14/08/2014, 11:07
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: alert () en un label

No sé en qué parte estarás colocando la inclusión del archivo JS, pero por si las dudas, me refería a que hagas esto:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <meta charset = "utf-8" />
  3.     <title>Formulario</title>
  4.     <style type = "text/css">
  5.         .aviso{
  6.             display: none;
  7.         }
  8.     </style>
  9. </head>
  10.     <form id = "ejemplo">
  11.         <section>
  12.             <label for = "nombre">Nombre:</label>
  13.             <input type = "text" name = "nombre" autofocus />
  14.             <label class = "aviso">Debe de ingresar su nombre</label>
  15.         </section>
  16.         <section>
  17.             <label for = "edad">Edad:</label>
  18.             <input type = "text" name = "edad" />
  19.             <label class = "aviso">Debe de ingresar su edad</label>
  20.         </section>
  21.         <input type = "submit" value = "Procesar" />
  22.     </form>
  23.     <script type = "text/javascript" src = "Validacion3.js"></script>
  24. </body>
  25. </html>

Si te fijas bien, la inclusión del archivo JS va debajo de los elementos a los cuales quiero afectar, por eso te dije que si el código JS cargara antes que ellos, nunca los afectaría pues al momento de su carga, dichos elementos aún no existen. Por si las dudas, lo he probado tal y como lo estoy mostrando y funciona perfectamente. Prueba realizando este cambio y nos cuentas cómo te fue.

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
  #7 (permalink)  
Antiguo 14/08/2014, 11:33
 
Fecha de Ingreso: abril-2013
Ubicación: Puerto Rico (Mnes)
Mensajes: 20
Antigüedad: 11 años
Puntos: 0
Respuesta: alert () en un label

Que grande Alexis !! Mil gracias funciona funciona funcionaaaaa siiiiiii :D
Hice lo que me dijiste y funciona :D tema solucionado.
Genio!!
PD: Disculpa por mi torpeza :B
Hasta pronto :D

Etiquetas: formulario, label
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 18:55.