Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/04/2009, 09:43
xenon254
 
Fecha de Ingreso: noviembre-2007
Ubicación: Zamora (Spain)
Mensajes: 251
Antigüedad: 17 años, 2 meses
Puntos: 1
Pregunta Dudas de Return entre funciones

Buenas a todos

Conseguí por internet un par de funciones que trabajan unidas para validar si en un campo ha sido escrito correctamente un CIF o un NIF.

Código:
function valcif(cif){
	par = 0;
	non = 0;
	letras="ABCDEFGHKLMNPQS";
	let=cif.charAt(0);

	if (!isNaN(let)){
		nif=cif;
		valnif(nif);
		return false;
	}
	if (letras.indexOf(let.toUpperCase())==-1){
		alert("El comienzo del Cif no es válido");
		return false;
	}

	for (zz=2;zz<8;zz+=2)
		par = par+parseInt(cif.charAt(zz));

	for (zz=1;zz<9;zz+=2){
		nn = 2*parseInt(cif.charAt(zz));
		if (nn > 9)
			nn = 1+(nn-10);
		non = non+nn;
	}

	parcial = par + non;
	control = (10 - ( parcial % 10));

	if (control==10)
		control=0;

	if (control!=cif.charAt(8)){
		alert("El Cif no es válido");
		return false;
	}
}

function valnif(nif){
	dni=nif.substring(0,nif.length-1);
	let=nif.charAt(nif.length-1);
	
	if (!isNaN(let)){
		alert('Falta la letra del Nif');
		return false;
	}
	else{
		cadena = "TRWAGMYFPDXBNJZSQVHLCKET";
		posicion = dni % 23;
		letra = cadena.substring(posicion,posicion+1);
		if (letra!=let.toUpperCase()){
			alert("Nif no válido");
			return false;
		}
	}
}
En un formulario dispongo de un botón que me llama a una función principal que hace más comprobaciones con otros campos.

Desde esa función llamo a estas dos validadoras cif/nif de la siguiente manera:

if (!valcif(f.nif.value))
return false;

Pensaba que me si las que validan lo hacían todo devolverían "true" y podría seguir con el resto de las operaciones, pero siempre devuelven "false" aunque no se quejen con ningun alert y en el cuadro haya escrito un valor correcto.

Además siempre se queda parado el conjunto porque no se como continuarla..

Gracias de antemano por la ayuda.

Un saludo.