Hola a todos. Acabo de ingresar en el foro y aquí os expongo mi problema, a ver si alguien me echa una mano:
Tengo 2 formularios, cada uno en una pàgina asp.
El objetivo es que, una vez el usuario ha llenado todos los campos, se mande un e-mail con esos datos y a continuación se inserte un registro nuevo en una base de datos.
El Formulario_1 sirve para entrar los datos, tiene una función para validar que no estén vacíos y los manda a la pàgina del Formulario_2 . El còdigo que realiza estas acciones es el siguiente:
<form action="pag_formulario_2.asp?" name="Formulario_1" method="post">
<input type="button" value="Enviar" OnClick="verificaCamps(window.document.Formulario_ 1)"><input type="Reset" value="Esborrar">
<script languaje="JavaScript">
function verificaCamps(form)
{
var1=form.parc.selectedIndex;
var2=form.contacte.value;
var3=form.telefon.value;
var4=form.incidencia.value;
if (var1 ==0 | var2 =='' | var3 ==''| var4 =='')
{
alert("S'han d'omplir tots els camps");
}
else
form.submit();
}
</script>
El Formulario_2 presenta al usuario una pantalla de sólo lectura para que confirme los datos que ha entrado. Si los confirma se manda el e-mail y se llena el registro. El código es el siguiente:
<form action="mailto:<%Response.write(Rec2("Email"))%>?s ubject=Incidència" name="Formulario_2" method="post" enctype="text/plain">
input type="button" value="Enviar" OnClick="enviar_form(window.document.Formulario_2) "> <input type="button" value="Cancelar" onclick="Cancela(this)">
<script languaje="JavaScript">
function enviar_form(Formulario_2)
{
Formulario_2.submit();
javascript:history.go(-2);
window.alert("El formulari s'ha enviat correctament. Gràcies.")
}
function Cancela()
{
javascript:history.go(-1);
}
</script>
El problema es que en el momento en que se envía el Formulario_1 y aparece el Formulario_2 ya se inserta el registro en la base de datos, aunque no se manda el e-mail. Esto es un inconveniente ya que a veces el usuario rectifica, se lía, etc, y queda grabado un registro inútil o duplicado.
El código que inserta el registro es:
<%Str_SQL1 = "INSERT INTO .... (continúa)
Set Rec1=Conex.Execute(Str_SQL1)%>
He probado de poner este comando como OnClick, como OnSubmit del Formulario_2 y de todas las maneras que se me ocurren, pero sigue pasando lo mismo, no entiendo por qué se activa desde el Formulario_1. Supongo que podría ser una solución poner este código dentro de la función del Formulario_2 pero esto no sé como se hace ... ¿Alguien puede ayudarme?