Ver Mensaje Individual
  #7 (permalink)  
Antiguo 18/05/2011, 16:50
Avatar de Hugo_Euan
Hugo_Euan
 
Fecha de Ingreso: abril-2011
Ubicación: Mérida, Yucatán, México
Mensajes: 193
Antigüedad: 13 años
Puntos: 71
Respuesta: "Juntar" dos javascript

=D ok, creo que ahora si te voy entendiendo mejor...

Le dí una mirada al código que posteaste y vamos a tratar de optimizarlo un poco y hacerlo mas entendible =D
bueno, vamos a armar lo que necesitas...

el primer evento de revisar cuantos caracteres tiene el objeto requiere que la función se ejecute constantemente mientras se está en el formulario, para ello haremos uso de un timer en vez del evento Keydown del objeto =D

y armamos la función que validará el número de caracteres para lo cual queda de la siguiente manera:

Código Javascript:
Ver original
  1. var timer = setInterval('COUNT_CHARACTERS();', 10);
  2.  
  3. function COUNT_CHARACTERS(){
  4.    var MyElement = document.getElementById('Comentarios');
  5.    var Count = document.getElementById('Count');
  6.    Count.innerHTML = 'Comentarios: ('+MyElement.value.length+' / 99)';
  7.    if(MyElement.value.length > 99){
  8.       MyElement.value = MyElement.value.substring(0,99);
  9.    }
  10. }

Lo que hace esta función es obtener el id del objeto mediante document.getElementById

y mediante estas dos lineas mostramos al usuario cuantos cacteres maximo puede usar y cuantos a usado, tipo (10 / 99) etc...


var Count = document.getElementById('Count');
Count.innerHTML = 'Comentarios: ('+MyElement.value.length+' / 99)';


y pondrias en tu html el campo que quieres delimitar:
<input type="text" id="Comentarios" /> ó <textarea id="Comentarios"></textarea>

de esa manera podrás validar que no se sobrepase de 99 caracteres.
ahora al siguiente paso, validar que los campos no esten vacios y que el email sea válido.
para ello la función quedaria de la siguiente manera:

Código Javascript:
Ver original
  1. var Debugger;
  2. var Proceded
  3.  
  4. function VALIDATE_FIELDS(){
  5.    Debugger='Se han encontrado los siguientes errores: \n \n';
  6.    Proceded=true;
  7.    var Fields = ['Nombre', 'Direccion', 'Edad', 'Mail', 'Pais', 'campo_N...'];
  8.    for(var i=0; i<Fields.length;i++){
  9.       var MyField = document.getElementById(Fields[i]);
  10.       if(Fields[i] == 'Mail'){
  11.          if(MyField.value.indexOf('@')==-1){
  12.             Debugger=Debugger+'* El email proporcionado es incorrecto. \n';
  13.             Proceded=false;
  14.          }
  15.       }else{
  16.          if(MyField.value == ''){
  17.             Debugger=Debugger+'* El campo '+Fields[i]+' no puede estar vacio. \n';
  18.             Proceded=false;
  19.          }
  20.       }
  21.    }
  22.    if(Proceded){
  23.       document.forms["MyData"].submit();
  24.    }else{
  25.       alert(Debugger);
  26.    }
  27. }

En esta función lo que se hace es sencillo, mediante la variable Debugger controlamos los errores que reportaremos al usuario y Proceded es una variable de tipo boleano, que nos indicara si todo salio correcto, si es así hacemos el submit del form, y si no imprimimos los erroes encontrados.

if(Proceded){
document.forms["MyData"].submit();
}else{
alert(Debugger);
}


también declaramos una variable que contiene todos los id de los elementos de nuestro formulario

var Fields = ['Nombre', 'Direccion', 'Edad', 'Mail', 'Pais', 'campo_N...'];

el cual recorreremos mediante un for para ir asignandoselos a la variable MyField

si MyField[i] vale 'Mail'

validamos que el email sea correcto, pero si MyField[i] no vale 'Mail' entonces quiere decir que se trata de otro campo y validamos que no se encuentre vacio

if(Fields[i] == 'Mail'){
if(MyField.value.indexOf('@')==-1){
Debugger=Debugger+'* El email proporcionado es incorrecto. \n';
Proceded=false;
}
}else{
if(MyField.value == ''){
Debugger=Debugger+'* El campo '+Fields[i]+' no puede estar vacio. \n';
Proceded=false;
}
}
}


el ejemplo queda de la siguiente manera y así de esta misma manera la puedes implementar en tu formulario.
Código HTML:
Ver original
  1. <title>ejemplo</title>
  2. var timer = setInterval('COUNT_CHARACTERS();', 10);
  3. var Debugger;
  4. var Proceded;
  5.  
  6. function COUNT_CHARACTERS(){
  7.     var MyElement = document.getElementById('Comentarios');
  8.     var Count = document.getElementById('Count');
  9.     Count.innerHTML = 'Comentarios: ('+MyElement.value.length+' / 99)';
  10.     if(MyElement.value.length > 99){
  11.         MyElement.value = MyElement.value.substring(0,99);
  12.     }
  13. }
  14.  
  15. function VALIDATE_FIELDS(){
  16.   Debugger='Se han encontrado los siguientes errores: \n \n';
  17.   Proceded=true;
  18.   var Fields = ['Nombre', 'Direccion', 'Edad', 'Mail', 'Pais', 'campo_N...'];
  19.   for(var i=0; i<Fields.length;i++){
  20.       var MyField = document.getElementById(Fields[i]);
  21.       if(Fields[i] == 'Mail'){
  22.           if(MyField.value.indexOf('@')==-1){
  23.               Debugger=Debugger+'* El email proporcionado es incorrecto. \n';
  24.               Proceded=false;
  25.           }
  26.       }else{
  27.           if(MyField.value == ''){
  28.               Debugger=Debugger+'* El campo '+Fields[i]+' no puede estar vacio. \n';
  29.               Proceded=false;
  30.           }
  31.       }
  32.  }
  33.  if(Proceded){
  34.       document.forms["MyData"].submit();
  35.  }else{
  36.       alert(Debugger);
  37.  }
  38. }
  39. </head>
  40. <form name="MyData" action="archivo.php" method="post">
  41.     <label id="Count">Comentarios:</label><br /><textarea id="Comentarios">Aquí tus comentarios</textarea><br />
  42.     Nombre:<br /><input type="text" id="Nombre" /><br />
  43.     Direccion:<br /><input type="text" id="Direccion" /><br />
  44.     Edad:<br /><input type="text" id="Edad" /><br />
  45.     E-Mail:<br /><input type="text" id="Mail" /><br />
  46.     Pais:<br /><input type="text" id="Pais" /><br />
  47.     Campo_N...:<br /><input type="text" id="campo_N..." /><br />
  48.     <input type="button" onClick="VALIDATE_FIELDS();" value="imprimir alerta" />
  49. </form>
  50. </body>
  51. </html>

es muy importante que te des cuenta de que para validar el formulario ya no se está utilizando un SUBMIT, se está utilizando un button

<input type="button" onClick="VALIDATE_FIELDS();" value="Enviar formulario" />

de esta manera ya tenemos unidos tus dos scripts y de una manera mas entendible, bueno al menos eso creo, jejeje.

Espero que te sea de ayuda y que si resuelva tu inconveniente.

SALUDOS y EXITO !!!!

=D
__________________
Se acepta Karma (:

Si Dios con nosotros, quien contra nosotros !!