Foros del Web » Programando para Internet » Javascript »

validar lista de un formulario y email

Estas en el tema de validar lista de un formulario y email en el foro de Javascript en Foros del Web. Hola: Tengo un formulario el cual le he metido validación para el email tal y como aparece en una de las secciones de el faq, ...
  #1 (permalink)  
Antiguo 14/05/2005, 19:35
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 19 años, 2 meses
Puntos: 0
Pregunta validar lista de un formulario y email

Hola:

Tengo un formulario el cual le he metido validación para el email tal y como aparece en una de las secciones de el faq, pero me gustaría tambien poder validar los demás campos y así mismo validar las opciones de una lista de selección, cómo puedo hacer eso? Además encontré otro script que me es útil para que no envien el formulario dos veces ya que el servidor es un poco lento a veces.

Cabe mencionar que no sé casi nada de JS.

Aquí el código HTML:

Código HTML:
 <form name="formulario" id="formulario" action="send_email.php" onsubmit="return emailCheck(this.email.value)" method="post" target="_self">
			    <label for="nombre"><b>Nombre</b>:</label>
			    <br /><input name="nombre" type="text" id="nombre" value="" size="30"  maxlength="100" />
			    <br />
			    <label for="email"><b>Correo electr&oacute;nico</b>:</label>
<br /><input name="email" type="text" id="email" value="" size="30"  maxlength="100" />
			    <br />
			    <label for="residencia"><b>Pa&iacute;s y ciudad de residencia</b>:</label>
<br /><input name="residencia" type="text" id="residencia" value="" size="30"  maxlength="100" />
			    <br />
			    <label for="temas"><b>Tema sobre el que desea informaci&oacute;n</b>:</label>
			    <br /><select name="temas">
			      <option disabled selected value="0">--Seleccione una opci&oacute;n--</option>
			      <option value="1">tema 1</option>
			      <option value="2">tema 2</option>
			      <option value="3">tema 3</option>
			      <option value="4">tema 4</option>
			      <option value="5">tema 5</option>
			      <option value="6">tema 6</option>
			    </select><br />
				<label for="comentarios"><b>Comentarios</b>:</label>
				<br />
				<textarea name="comentarios" id="comentarios" rows="6" cols="30"></textarea>
				<br />
				<input name="enviar" type="submit" class="boton" id="enviar" value="enviar" />
			  </form> 

y aquí el JS:

Código:
function emailCheck (emailStr) {

var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^[(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);
if (matchArray==null) {
    alert("La dirección de correo parece ser inválida (verifique las @ y .)")
    return false
}
var user=matchArray[1]
var domain=matchArray[2]

if (user.match(userPat)==null) {
    alert("El nombre de usuario parece ser inválido.")
    return false
}

var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
      for (var i=1;i<=4;i++) {
        if (IPArray[i]>255) {
            alert("La dirección IP de destino es inválida!")
        return false
        }
    }
    return true
}

var domainArray=domain.match(domainPat)
if (domainArray==null) {
    alert("El dominio no parece ser válido.")
    return false
}
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 ||
    domArr[domArr.length-1].length>3) {
   alert("Las direcciones deben terminar con dominios de tres letras, o el código de país de dos letras.")
   return false
}

if (len<2) {
   var errStr="Dominio Inválido!";
   alert(errStr)
   return false
}

return true;
}

//Funcion para impedir que se reenvie el formulario dos veces

var cuenta=0;
function enviado() {
	if (cuenta == 0) {
		cuenta++;
		return true;
	}
	else {
		alert("El formulario ya está siendo enviado, por favor aguarde un instante.");
		return false;
	}
}
De antemano gracias
  #2 (permalink)  
Antiguo 15/05/2005, 21:22
 
Fecha de Ingreso: septiembre-2003
Ubicación: London
Mensajes: 162
Antigüedad: 20 años, 7 meses
Puntos: 0
No sabes mucho de JS pero es muy sencillo, mira, cuando haces el " onsubmit="return emailCheck(this.email.value) " lo que estas haciendo es enviarle a una funcion llamada emailCheck el valor del formulario y, luego, esa funcion devolvera true o false segun si permite o no que se envie.

Claro esta, el formulario tiene varios valores, entonces, que valor le estoy enviando a esa funcion??? Pues le estoy enviando un conjunto de datos en donde se encuentran todos los campos que componen el formulario con sus respectivos valores.

Para validar esos campos, asegurarse de que lo que hay escrito en ellos es lo adecuado, puedes hacer muchas cosas, dependiendo de que cosas quieras mirar, asique aqui te pongo una guia facil para validarlos todos sabiendo poco de JS (deverias de mirarte un manualcillo que no es tan complicao).

Una forma sencillita de validarlos uno a uno (que es muy facil de hacer) es colocarle un name a todos los campos, la propiedad name en todos ellos de esta manera: name="nombre_del_campo".

Una vez hecho esto, en el codigo JS podemos hacer referencia al valor del campo de la siguiente manera:

nombreDelFormulario.nombreDelCampo.value

Teniendo en cuenta que en tu codigo le envias el formulario entero a una funcion, y esta funcion lo recibe y lo llama emailStr, para hacer referencia a algun campo en tu codigo tendrias que hacer:

emailStr.nombreDelCampo.value

Por ejemplo, el correo electronico es un campo de tipo texto que tiene un nombre, "email", para referirnos a ese campo hariamos:

emailStr.email

y para coger el valor de ese campo:

emailStr.email.value

A partir de aqui, dependiendo del campo necesita de una manera de ser mirado u otra, por ejemplo si es el email hay que mirar que tenga la @ y demas, si es texto o si es un campo numerico, ... pero estas cosas debes mirarte un manual de JS, con mirarte 2 o 3 paginitas te bastara, tansolo aprende su aritmetica, su logica y sus funciones con cadenas y con tipos de valores, en una noche o como mucho 3 dias lo deberias haber aprendido sin problemas...
  #3 (permalink)  
Antiguo 16/05/2005, 18:22
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 19 años, 2 meses
Puntos: 0
Mil gracias muy claro todo lo que dices.

Aunque la validación del campo de correo ya la tengo en el código arriba señalado, lo que no sé cómo hacer es incluir en esa validación los demás campos de mi formulario y el combobox.

Me parece muy buena tu propuesta de leerme un manualito. He estado viendo por mi trabajo que el PHP ASP JavaScript y ActionScript se parecen MUCHO. He de decir que estudié diseño gráfico y parece que por ello me bloquéo mucho para la programación. Hay algun manual online muy sencillo y nada técnico que me puedan recomendar para mi situación?

Gracias !
  #4 (permalink)  
Antiguo 16/05/2005, 20:19
 
Fecha de Ingreso: septiembre-2003
Ubicación: London
Mensajes: 162
Antigüedad: 20 años, 7 meses
Puntos: 0
Jejeje, pos yo tengo el problema a la inversa... se me da muy bien la programacion y no especialmente bien el diseño grafico... (aun y asi y a pesar de dolores de cabeza consigo hacer las cosas) los manuales que yo tengo de JS son muy tecnicos, asi se aprende mas rapido, asiq no tengo ninguno sencillito... :s
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:17.