Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/11/2011, 06:21
0gradoskelvin
 
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 15
Antigüedad: 20 años
Puntos: 0
Pregunta Incluir varias funciones en una principal

Hola a tod@s,
Tras buscar por todo el foro, google y tal encontré varios ejemplos pero al final ninguno me ha funcionado o no he sabido utilizarlos.
Antes de nada, comentaros que estoy empezando en el mundo del JavaScript, así que perdonad si estoy un poco perdido o cometo fallos grotescos, y tras haber dicho esto os comento mi problema:
Me he creado una especie de plantilla para hacer la validacion de cualquier campo que podria encontrarme en un formulario, pero sobre todo con los que trabajaría, es decir, campos de texto, numéricos, de edad, telefonicos, email, dni botones de radio, select, etc. y hasta aquí bien, teniendo por ejemplo por separado las funciones de validar_texto(), validar_dni(), validar_email(), etc... sin embargo quiero meter todas estas funciones en una que se llame validar_todo() y luego llamar a esta última función desde el onsubmit de un formulario.
he probado llamar a esas funciones de la forma:
Código:
function validar_todo(){
      validar_texto();
      validar_edad();
      validar_telefono();
      validar_email();

}
Pero me sale el mensaje de alert con los errores y se me acaba enviando el formulario con los campos vacios.
Cuando pruebo las funciones de texto, dni, etc por separado si me funcionam.
Y he aquí mi pregunta, ¿Como puedo hacer para que desde la funcion validar_todo me llame a las otras funciones y que en caso de que todas sean válidas me envie el formulario?
Muchisimas gracias, pero es que me estoy volviendo loco.
Por si os sirve de ayuda os indico lo que tengo:
Código:
<script type="text/javascript">
function validar_todo(){
 validar_texto();
 validar_edad();
 validar_telefono();
 validar_numero();
validar_dni();
validar_sexo();
validar_select();
validar_cp();
validar_email();
validar_check();
}

//hago validacion nombre
function validar_texto(){
if(document.envio.nombre.value.length==0){
alert("Introduzca su nombre");
return false;
}
}

//hago validacion edad
function validar_edad(){
edad2= document.getElementById('edad').value;
if (edad2==""){
       alert("Por favor introduzca su edad.")
             return false;
    }else{
       if (edad2<18){
          alert("Debe ser mayor de 18 años.")
         return false;
       }
    } 
}

//hago validacion telefono
function validar_telefono(){
telefono2= document.getElementById('telefono').value;
if (telefono2==""){
       alert("Por favor introduzca un telefono.")
             return false;
    }else{
if( !(/^\d{9}$/.test(telefono2)) ) {
alert("Introduzca un formato correcto de telefono");
return false;
}
}
}

//hago validacion campo numerico
function validar_numero(){
numero2= document.getElementById('numero').value;
if (numero2==""){
       alert("Por favor introduzca un numero.")
             return false;
    }else{
if( isNaN(numero2) ) {
	alert("Por favor introduzca un numero correcto.")
  return false;
}
}
}

//hago validacion dni
function validar_dni(){
dni2= document.getElementById('dni').value;
var letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
 
if( !(/^\d{8}[A-Z]$/.test(dni2)) ) {
	alert("Por favor introduzca un dni correcto.")
  return false;
}
 
if(dni2.charAt(8) != letras[(dni2.substring(0, 8))%23]) {
	alert("Por favor introduzca una letra correcta.")
  return false;
}
}

//hago validacion Radiobutton
function validar_sexo(){
sexo2= document.getElementsByName('sexo');
var seleccionado = false;
for(var i=0; i<sexo2.length; i++) {	
  if(sexo2[i].checked) {
    seleccionado = true;
    break;
  }
}
 
if(!seleccionado) {
	alert("Por favor indiquenos su sexo.")
  return false;
}
}

//hago validacion select
function validar_select(){
opciones2= document.getElementById('opciones').selectedIndex;
if(opciones2 == null || opciones2== 0 ) {
	alert("Por favor seleccione una opcion")
  return false;
}
}

//hago validacion codigo postal(es igual que el del numero pero con el limite de 5 cifras en las caracteristicas del form
function validar_cp(){
cp2= document.getElementById('cp').value;
if (cp2==""){
       alert("Por favor introduzca su codigo postal.")
             return false;
     }else{
if( !(/^\d{5}$/.test(cp2)) ) {
alert("Introduzca un codigo postal correcto");
return false;
}
}
}

//hago validacion email
function validar_email(){
if (document.envio.email.value==""){
       alert("Por favor introduzca una direccion de email.")
             return false;
    }else{
if (document.envio.email.value.indexOf('@',0)==-1 ||
       document.envio.email.value.indexOf('@',0)== 0 ||
       document.envio.email.value.indexOf('.',0)==-1) {
alert("Dirección de e-mail inválida");
return false;
}
}
}

//hago validacion checkbox
function validar_check(){
elemento= document.getElementById('privacidad');
if (!elemento.checked){
alert("Por favor, acepte las condiciones de proteccion de datos.Gracias");
return false;
}

}


</script>
Ah, y si quereis usar el código para tenerlo como ejemplo podeis usarlo.
Gracias de nuevo