Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/05/2007, 07:49
Avatar de Kolzer
Kolzer
 
Fecha de Ingreso: julio-2003
Ubicación: Barcelona
Mensajes: 124
Antigüedad: 20 años, 10 meses
Puntos: 0
Re: Comprobar tipos

Pues si, lo poco que di de javascript fue justamente para eso.
Te cuento la idea de lo que me enseñaron:

En el formulario, despues de acabar los input del tipo texto, pones al final un simbolo que quieras para avisar del error (yo por ejemplo usaba *).
Entonces le das un class="novisible" y en el css .novisible{visibility:hidden;}
y le tendras que decir a qué funcion del javscript llamará cuando haga cambios en el campo de texto. Por ejemplo el codigo que usaba:

Código HTML:
<input type="text" id="nombre" name="nombre" size="15" maxlength="15" onchange="javascript: return f_val_nombre(window.document.forms['form_id'].elements['nombre'].value, 'nombre_class', 'visible', 'novisible')"/>
<span id="nombre_class" class="novisible"> * </span> 
La funcion que uso como ves es f_val_nombre, y su codigo seria asi:

Código:
//valida el nombre. El campo no puede estar vacio ni tener numeros, solo letras, y la primera en mayuscula.
function f_val_nombre(nombre, id_class, si, no) {
	var a = window.document.getElementById(id_class);
	if (f_isAllLetter(nombre)) {
		a.className = no;
		return true;
	} else { 
		a.className = si;
		return false;
	}
}
Tambien se pueden hacer funciones para validar una fecha tipo 15/10/1976 pero bueno buscando encontraras muchas parecidas, y para validar que solo se introducen numeros tambien es muy sencillo, hay muchas formas, una de ellas (personalizable basandose en la tabla ascii, por eso la pongo):

Código:
// Devuelve true si todos los caracteres de la cadena son numeros y false si no.
function f_isAllNumber(cadena) {
	if (cadena.length == 0) {
		return false
	} else {
	var a, i, aux
	aux = String(cadena); a = true;	
	for (i = 0; i < aux.length && a; i++) {
	// Dos formas de hacer lo del codigo ASCII:
	//		cadena.charAt(i) < "{"
	//		cadena.charCodeAt(i) < 123
		a = aux.charCodeAt(i) < 58 && aux.charCodeAt(i) > 47
	}	
		return a
	}
}
__________________
I'm digging my way to something better...

Última edición por Kolzer; 08/05/2007 a las 07:56