2 javascript en un formulario

Tengo un formulario en el cual quiero que se validen algunos campos y que luego muestre un mensaje de confirmación, lo he ido haciendo a parches.
Esto es lo que he puesto en <head>:
<script LANGUAGE="JavaScript">
function Validar(form)
{
if (form.nomb.value == "")
{ alert("Por favor, escriba su nombre"); form.nomb.focus(); return; }
if (form.mail.value == "")
{ alert("Por favor, escriba su dirección de e-mail"); form.mail.focus(); return; }
if (form.text.value == "")
{ alert("Por favor, escriba su aportación"); form.text.focus(); return; }
if (form.mail.value.indexOf('@', 0) == -1 ||
form.mail.value.indexOf('.', 0) == -1)
{ alert("Dirección de e-mail inválida"); form.mail.focus(); return; }
form.submit();
}
</script>
<script LANGUAGE="JavaScript">
function Validar(form)
{
var resultado = Validar(form);
if (resultado) {resultado = Validar(nomb.mail.text);}
{
form.submit();
}
}
</script>
Y esto lo que engo en el botón que envía:
<input type="submit" name="submit" value="Enviar" class="boton" onClick="Validar(this.form)">
<input type="hidden" name="success" value="http://www.zonaele.com/exito.htm">
Supongo que he cometido algún error garrafal pero soy muy novata y no sé cual es.

1 respuesta

Respuesta
1
En principio, como te dije antes, creo que te facilitaría mucho utilizar la función send, de la manera que se explica en: www.manusoftar.com.ar/sendfunction.htm
Pero, si querés armar la función, te recomiendo esto en el script:
Primero: vos conocés el formulario a verificar y sabes que es el form1 (por ejemplo), así que no hace falte el this. form
Segundo: no hace falta saber cuantos campos hay en el form, porque con: document. Form1. length; ya tenés ese dato, entonces:
var s=""
for (e=0; e<=document.form1.length; e++){
if (document.form1.elements[e].value=="" || document.form1.elements[e].value==" "){
s=s + document.form1.elements[e].name
}
}
if (s!=""){
alert("No llenaste todo el formulario");
} else {
document.form1.submit();
}
Ahora te explico que es lo que hago:
Genero un bucle (ciclo de repetición de instrucciones) o sea que todo lo que esté entre el for{ ... } se va a repetir tantas veces como se indique y en el caso se va a repetir desde 0 hasta el númeor de campos que hay en el formulario (document. Form1. Length) y va a ir de uno en uno (e++). Como verás, este valor va a estar almacenado en la variable e.
Después, reviso uno por uno los value de los campos, cuando le digo document. Form1.elements[e]. Value, lo que estoy diciendo es que me diga lo que se escribió (si es que se escribió algo) en el campo de número e. Porque en un formulario los campos pueden identificarse tanto por su nombre (name) como por un número único, en nuestro caso e.
Después reviso y si el valor es nulo, o sea nada o sea que está en blanco, vacío, entonces, le digo que almacene el nombre de ese campo en una variable, eso hasta que termine el bucle.
Después reviso si la variable predefinida, en nuestro caso es, tiene algún valor almacenado o es nula, si tiene algún valor almacenado quiere decir que al menos uno de los campos del formulario quedó vacío y muestro un mensaje de error: alert("Debe llenar todo el formulario");
De lo contrario envío el formulario: document. Form1. submit();
Espero que hayas podido entender bien lo que te quise explicar. Sino, nos seguimos escribiendo.
Atentamente. Manuel Fernández.
Hola
Gracias por tu atención, estoy perdidísima
La cosa es que necesito que se validen sólo tres de los campos del formulario y que luego aparezca una página de confirmación.
Las 2 acciones funcionaban separadamente, pero juntas no.
En un manual vi que el remedio podía ser incluir un tercero relacionado con el de validación (que está en el primer mensaje que te envié):
<script LANGUAGE="JavaScript">
function Validacion(form)
{
var resultado = Validar(form);
if (resultado) {resultado = Validar(nomb.mail.text);}
{
form.submit();
}
}
</script>
Y en el botón que envía el formulario, las dos órdenes:
<input type="submit" name="submit" value="Enviar" class="boton" onClick="Validar(this.form)">
<input type="hidden" name="success" value="http://www.zonaele.com/exito.htm">
Me han hecho notar que al principio llamaba a dos funciones de la misma forma, lo he cambiado, pero no sé si estoy haciendo las llamadas entre ellas correctamente.
¿Le ves alguna solución?
Gracias por el interés que muestras
Estuve mirando el script y ciertamente hay algunos errores, pero tengo la solución perfecta:
Yo tuve este tipo de problemas al iniciarme en javascript y se me ocurió una forma de que la gente que quisiera validar sus formularios no tuviera que volverse loca o loco haciendo scripts y creé una función la cual se llama send (verás que no soy muy original).
Que se encarga de verificar los campos de cualquier formulario y si alguno esta in completar, entonces da un mensaje personalizado.
Te recomiendo que visites: ww.manusoftar.com.ar/sendfunction.htm
Si hay algo que no entendés decime, pero creo que lo dejé claro en el sitio.
De cualquier forma, si querés armar un sceript a medida, completamente personalizado, decime que lo hacemos. No hay drama.
Atentamente. Manuel Fernández.
Cualquier duda, mi mail es: [email protected]
Entonces lo vamos a hacer diferente:
Supone que los campos son nombre, apellido y edad (por dar un ejemplo). Y el formulario es form1.
<script language="javascript">
function verificar(){
if (document.form1.nombre.value!="" && document.form1.apellido.value!="" && document.form1.edad.value!=""){
document.form1.submit();
} else {
alert("No ha llenado algún campo");
}
}
</script>
en el botón de enviar tenés que poner esto:
<input type="button" name="boton" value="Enviar" onClick="verificar();">
Espero que esta vez te funcione; poné el javascript en el body por las dudas.
Atentamente. Manuel Fernández.
Pues no me funciona.
¿Qué debo poner en el botón de enviar?
De todas formas ya te dije que me interesa que no se validen todos los campos del formulario, porque hay alguno que es una aclaración si se escoge una opción concreta en otro campo, así que no puede ser obligatorio.
¿Tiene remedio?
Gracias por tu ayuda
Hola de nuevo
Me temo que no funciona, quizás es porque el botón hace arranzar dos actiones: la validación y mostrar la página de confirmación.
¿Qué hago?
Gracias
Fíjate que el type del botón sea button y no submit; y a continuación, en el action del formulario escribí la dirección de la página que indica que se ha llenado con éxito. Y borra el class="boton".
Eso debería funcionar.
Atentamente. Manuel Fernández.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas