Ver Mensaje Individual
  #11 (permalink)  
Antiguo 21/09/2007, 06:28
Avatar de Kelpie
Kelpie
 
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 23 años, 2 meses
Puntos: 8
Re: envio de formulario complejo

Aquí te dejo un proceso típico de comprobación en JavaScript. Si quieres investigar más date una vuelta por este POST o mándame un privadín
Código:
<html>
<head>
	<title>Untitled</title>
	<script>
	function validaEnvia(nombreForm){
		//Kelpie 2007
		//Intentamos obtener el objeto formulario...
		obj=window.document.getElementById(nombreForm);
		if (!obj) obj=window.document.forms[nombreForm];
		if (!obj) obj=eval("window.all."+nombreForm);
		//Si lo hemos logrado
		if (obj){
			//Preparamos una variable para mostrar avisos
			mensaje="";
			//Y un objeto para darle el foco
			objFoco=null;
			//Vamos comprobando campos
			//Un campo que no puede estar vacío
			valorCampo=obj.c1.value;
			if (valorCampo.length==0){
				mensaje+="Debes rellenar el campo xxxxx\n";
				//Si no he asigando aún el objFoco lo cargo con este campo
				//Para que se acuerde del primero que falló
				//Si queremos darle el foco al último basata con quitar el if(!objFoco) en todas
				if (!objFoco) objFoco=obj.c1;
			}
			//Un desplegable en el que la primera opción no es válida
			valorCampo=obj.combo.value;
			if (valorCampo=="1"){
				mensaje+="Debes seleccionar una opción\n";
				if (!objFoco) objFoco=obj.combo;
			}
			//Comprobar si el check está marcado. Si lo está, el campo c2 no puede estar vacío
			if(obj.chek.checked){
				//Miramos c2...
				valorCampo=obj.c2.value;
				if (valorCampo.length==0){
					mensaje+="Debes rellenar el campo yyyyy si marcas el check\n";
					if (!objFoco) objFoco=obj.c2;
				}
			}
			//Si mensaje contiene algo es que no ha pasado la prueba...
			if (mensaje!=""){
				alert("Revisa el formulario:\n"+mensaje);
				if (objFoco) objFoco.focus();
			}else{
				//Enviar el form
				obj.submit();
			}
		}
	}
	</script>
</head>

<body>

	
	
	<form action="" method="post" name="formulario" id="formulario">
		Este hay que llenarlo: <input type="text" name="c1">
		<br>
		Este no hace falta si no se marca el check: <input type="text" name="c2">&nbsp;
		<input type="checkbox" name="chek" value="">Marca para obligar a llenar el texto
		<br>
		<select name="combo">
					<option value="1" SELECTED>Selecciona una opción</option>
					<option value="2">Uno</option>
					<option value="3">Dos</option>
		</select>
		<br>
		<input type="button" value="Enviar" onClick="validaEnvia('formulario');">
	</form>
	
</body>
</html>
__________________
Kelpie