Foros del Web » Programando para Internet » Javascript »

Una comprobacion total

Estas en el tema de Una comprobacion total en el foro de Javascript en Foros del Web. Hola como hacer una comprobación de unos campos en el momento de escribir y si esta mal muestre una capa oculta que tiene dentro el ...
  #1 (permalink)  
Antiguo 15/08/2012, 08:18
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Pregunta Una comprobacion total

Hola como hacer una comprobación de unos campos en el momento de escribir y si esta mal muestre una capa oculta que tiene dentro el mensaje del error y según avanza el usuario en los campos si esta mal muestre el mensaje de error. Cuando el usuario lo corrige se quita el mensaje de error y si están corregidos todos los campos se quita la capa . Luego si de nuevo aparece el error que de nuevo aparesca la capa .

Yo intente creando varios codigos diferentes ... pero no consigo que se quite el error en el momento de ser corregido ....

Alguna idea o algún tutorial para hacer comprobaciones con javascript?

Gracias :)

Si necesitan mis códigos que salieron mal digan me lo pls
  #2 (permalink)  
Antiguo 15/08/2012, 08:22
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Una comprobacion total

Mira este ejemplo claro que se trabaja con JQuery

http://jquery.bassistance.de/validate/demo/
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 15/08/2012, 08:57
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Una comprobacion total

Podés hacerlo sin recurrir a una librería, para campos de texto lo ideal es utilizar el evento onkeyup

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>validar entero</title>
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. function validar(campo){
  9. var elcampo = document.getElementById(campo);  
  10. if((!validarEntero(elcampo.value))||(elcampo.value == "")){
  11. elcampo.value = "";
  12. elcampo.focus();
  13. document.getElementById('mensaje').innerHTML = 'Debe ingresar un número entero';
  14. }else{
  15. document.getElementById('mensaje').innerHTML = '';
  16. }
  17. }
  18.  
  19. function validarEntero(input){
  20. return !isNaN(input)&&parseInt(input)==input;
  21. }
  22. //]]>
  23. </head>
  24. <form action="#">
  25. <input type="text" id="pregunta" name="pregunta" value="" onkeyup="validar(this.id);" /><br />
  26. <input type="text" id="pregunta2" name="pregunta2" value="" onkeyup="validar(this.id);" /><br /><br />
  27. <input type="submit" value="procesar" /><br /><br />
  28. </form>
  29. <div id="mensaje"></div>
  30. </body>
  31. </html>

Dependiendo de lo que deba contener el campo (numeros, letras, rangos, etc) deberás cear los condicionales necesarios

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 15/08/2012, 13:21
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Una comprobacion total

Cita:
Iniciado por emprear Ver Mensaje
Podés hacerlo sin recurrir a una librería, para campos de texto lo ideal es utilizar el evento onkeyup

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>validar entero</title>
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. function validar(campo){
  9. var elcampo = document.getElementById(campo);  
  10. if((!validarEntero(elcampo.value))||(elcampo.value == "")){
  11. elcampo.value = "";
  12. elcampo.focus();
  13. document.getElementById('mensaje').innerHTML = 'Debe ingresar un número entero';
  14. }else{
  15. document.getElementById('mensaje').innerHTML = '';
  16. }
  17. }
  18.  
  19. function validarEntero(input){
  20. return !isNaN(input)&&parseInt(input)==input;
  21. }
  22. //]]>
  23. </head>
  24. <form action="#">
  25. <input type="text" id="pregunta" name="pregunta" value="" onkeyup="validar(this.id);" /><br />
  26. <input type="text" id="pregunta2" name="pregunta2" value="" onkeyup="validar(this.id);" /><br /><br />
  27. <input type="submit" value="procesar" /><br /><br />
  28. </form>
  29. <div id="mensaje"></div>
  30. </body>
  31. </html>

Dependiendo de lo que deba contener el campo (numeros, letras, rangos, etc) deberás cear los condicionales necesarios

SAludos

Gracias por tu respuesta pero tengo una pregunta.

Si lo que quiero es mostrar diferentes errores a varios campos de texto al usar:

document.getElementById('mensaje').innerHTML = 'Debe ingresar un número entero';

Luego al quitar el error :
else{
document.getElementById('mensaje').innerHTML = '';
}

Si hay mas errores ellos tambien se quitaran :(

Lo podria hacer con una matriz? De modo si pongo asi :


var errores = Array;

//funciones .... con sus mensajes de error

errores[0] = 'mensaje';

//....
errores[1] = 'mensaje2';
...

Y luego para poner lo al <div> puedo usar :

$var poner = errores[0] + errores[1] + errores[2] ....;

Y luego para quitar el error simplemente ago :

errores[0] = null; O errores[0] = '';

Cual de los dos metodos seria mejor ? el null o las comillas?


Se podia crear como lo dije??

Gracias :)
  #5 (permalink)  
Antiguo 15/08/2012, 13:55
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Pregunta Respuesta: Una comprobacion total

Hola cree el siguiente codigo :

Código Javascript:
Ver original
  1. function comprobar_envio() {
  2.     var n = form.name.value;
  3.     var e = form.email.value;
  4.     var p = form.phone.value;
  5.     var t = form.tema.value;
  6.     var m = form.message.value;
  7.     var errores = Array;
  8.     if(n.length > 0) {
  9.         if(isNaN(n)) {
  10.             errores[0] = '<font color="red" size="4">Nombre invalido!</font><br />';
  11.         } else {
  12.             errores[0] = null; 
  13.         }
  14.        
  15.     } else {
  16.         errores[0] = null; 
  17.     }
  18.     if(e.length > 0) {
  19.         if(comprobar_envio()) {
  20.             errores[1] = '<font color="red" size="4">El correo es invalido!</font><br />'; 
  21.         } else {
  22.             errores[1] = null; 
  23.         }
  24.    
  25.     } else {
  26.         errores[1] = null;
  27.     }
  28.     if(p.length > 0) {
  29.         if(/^([0-9]{3} ){2}([0-9]{3})$/.test(p) || /^[0-9]{9}$/.test(p) || /^(([0-9]{3})-){2}([0-9]{3})$/.test(p)) {
  30.             errores[2] = null; 
  31.         } else {
  32.             errores[2] = '<font color="red" size="4">El teléfono es invalido!</font><br />';   
  33.         }
  34.     } else { errores[2] = null; }
  35.    
  36.     if(t.length > 0) {
  37.         if(t.length < 4) {
  38.             errores[3] = '<font color="red" size="4">El tema es demasiado corta!</font><br />';
  39.         } else {
  40.             errores[3] = null; 
  41.         }
  42.     } else {
  43.         errores[3] = null; 
  44.     }
  45.     if(m.length > 0) {
  46.         if(m.length < 10) {
  47.             errores[4] = '<font color="red" size="4">Mensaje demasiado corto!</font>'; 
  48.         } else {
  49.         errores[4] = null; 
  50.         }
  51.     }else {errores[4] = null;}
  52.     return errores;
  53. }
  54. function enviar() {
  55.     if(comprobar_envio()) {
  56.         d = document.getElementById('errores');
  57.         d.style.opacity = '0.9';
  58.         d.style.height = '169px';
  59.         var e = comprobar_envio();
  60.         e = errores[0] + errores[1] + errores[2] + errores[3] + errores[4];
  61.         d.innerHTML = e;
  62.     } else {
  63.         d = document.getElementById('errores');
  64.         d.style.height = '28px';
  65.         d.style.opacity = '0.01';  
  66.     }
  67.        
  68.    
  69.    
  70. }


Pero siempre me develve 'Nan' es decir cando aparece el smap con id=errores me sale escrito 'NaN'


No consigo crear lo ...
Alguna ayuda?
  #6 (permalink)  
Antiguo 15/08/2012, 14:08
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Una comprobacion total

El problema es que stas trabajando supuestamente con un evento onkeyup sobre cada campo en particular, en ese caso, lo que tendrías que hacer es una capa (puede ser un input extra sin bordes) para mensajes de error para cada elemento

ejemplo

Código HTML:
Ver original
  1. <input type="text" id="pregunta" name="pregunta" value="" onkeyup="validar(this.id);" /> <span id="error_pregunta"></span><br />
  2. <input type="text" id="pregunta2" name="pregunta2" value="" onkeyup="validar(this.id);" /> <span id="error_pregunta2"></span><br /><br />

fijate los id de los span, con eso podés hacer dinámico la designación del elemento construyendo el id con el valor campo(que es el id) pasado a la función

Código Javascript:
Ver original
  1. document.getElementById('error_'+campo).innerHTML = 'Debe ingresar un número entero';

Cuando son forms mas complejos, con inputs de text, selects, radio, checkboxes, etc, yo prefiero esto ya pasar todos los errrores juntos

primero inicializás unas variables
Código Javascript:
Ver original
  1. var mensajes = "";
  2. var error ="";
  3.  
  4. //luego, ante cada condición (supongamos que el else es para el error)
  5.  
  6. if(....){
  7. // ok
  8. }else{
  9. error = "si";
  10. mensajes += "falta nombre...<br>"
  11. }
  12.  
  13. if(....){
  14. // ok
  15. }else{
  16. error = "si";
  17. mensajes += "falta apellido...<br>"
  18. }
  19.  
  20. if(....){
  21. // ok
  22. }else{
  23. error = "si";
  24. mensajes += "seleccione un pais<br>"
  25. }
  26.  
  27. // ante cualquier error producido la variable error ya no estaria vacia
  28. // entonces
  29.  
  30. if(error !== ""){
  31. document.getElementById('mensaje').innerHTML = mensajes;
  32. return false; // evitás el submit
  33. }
y la función de validación la llamo con
Código HTML:
Ver original
  1. <form action="x.php" onsubmit="return validar()">
olvidándome del onkeyup

Espero haberme explicado
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: comprobar_envio, tutoriales
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 22:08.