2011-12-19 16 views
11

Tengo el siguiente código, básicamente está realizando dos operaciones. El primero es enviar los datos de mi formulario a la hoja de cálculo de google y la otra operación envía mis datos de valor de segundo cuadro de texto de formulario a otro valor de cuadro de texto de la página. ¿Como hacer esto?Enviar formularios múltiples con un botón de envío

<script type="text/javascript"> 

<!-- 
    function copy_data(val){ 
var a = document.getElementById(val.id).value 
document.getElementById("copy_to").value=a 
} 
//--> 
</SCRIPT> 
<style type="text/css"> 
<!-- 
--> 
</style> 

</head> 
<body > 
<script type="text/javascript">var submitted=false;</script>   
<iframe name="response_iframe" id="hidden_iframe" style="display:none;" onload="if(submitted){window.location='Thanks.asp';}"></iframe>   <form action="https://docs.google.com/spreadsheet/formResponse?formkey=dGtzZnBaYTh4Q1JfanlOUVZhZkVVUVE6MQ&ifq" method="post" target="response_iframe" id="commentForm" onSubmit="submitted=true;"> 

<!-- #include virtual="/sts/include/header.asp" --> 
<!-- ABove this Header YJC --> 
<table style="background-color: #FFC ;" width="950" align="center" border="0" summary="VanaBhojnaluBooking_Table"> 
<tr><td colspan="7"><p class="MsoNormal" align="center" style="text-align:center;"><strong><span style="line-height:115%; font-family:'Arial Rounded MT Bold','sans-serif'; font-size:16.0pt; color:#76923C; ">Karthika Masa Vanabhojanalu &ndash; Participation Booking</span></strong></p> 
<p class="MsoNormal" align="center" style="text-align:center;"><strong><em><span style="line-height:115%; font-size:20.0pt; color:#7030A0; ">13<sup>th</sup> Nov 2011 - @ West Coast Park - Singapore</span></em></strong></p> 
    <p class="MsoNormal" align="center" style="text-align:center;"><strong><span style="color:#7030A0; ">Reserve your participation and avail </span><span style="color:red; "> <a target="_blank" href="/STS/programs/VB_2011_info.asp"> DISCOUNT </a></span><span style="color:#7030A0; "> on the ticket</span></strong></p></td> </tr> 
    <tr> 
    <th width="37" scope="col">&nbsp;</th> 
    <th width="109" rowspan="5" valign="top" class="YJCRED" scope="col"><div align="left"><font size="2"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;* Required</font></div></th> 
    <td width="68" scope="col"><div align="right"><font size="2.5px">Name</font><span class="yj"><span class="yjcred">*</span></span></div></td> 
    <th colspan="3" scope="col"><label for="Name"></label> 
     <div align="left"> 
     <input name="entry.0.single" class="required" style="width:487px; height:25px; vertical-align:middle;" type="text" id="entry_0" title="Enter your name" > 
     </div></th> 
    <th width="223" scope="col">&nbsp;</th> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td><div align="right"><font size="2.5px">Phone</font><span class="yj"><span class="yjcred">*</span></span></div></td> 
    <td width="107"><input name="entry.1.single" class="required" title="Handphone Number with out +65" maxlength="8" style="width:100px;height:25px;" type="text" onkeyup="copy_data(this)" onKeyPress="return numbersonly(this, event)" id="entry_1" ></td> 
    <td width="170"><div align="right"><font size="2.5px">Email</font><span class="yj"><span class="yjcred1">*</span></span></div></td> 
    <td width="206"><input name="entry.2.single" type="text" style="width:190px;height:25px;" id="required" title="Enter your email address" class="required email" ></td> 
    </tr> 


    <tr> 
    <td>&nbsp;</td> 
    <td><div align="right"><font size="2.5px">Home Phone</font></div></td> 
    <td width="107"><input name="entry.1.single" title="Handphone Number with out +65" maxlength="8" style="width:100px;height:25px;" type="text" onKeyPress="return numbersonly(this, event)" id="entry_100" ></td> 

    </tr> 


    <tr> 
    <td align="center" colspan="7"><p>&nbsp; 
     </p> 
     <p> 
     <input type="submit" name="submit" onMouseOver="Window.status='You can not see anything';return true" onMouseOut="window.status='Press SUBMIT only after proper inforatmion entering then you are Done'" onClick="jQuery.Watermark.HideAll();" value="Submit"> 
    </p> 
    <p>&nbsp;</p></td> 
    </tr> 
    <p>&nbsp;</p> 
    <tr> 
    <td colspan="25"></td> 
    </tr> 
</table> 

</form> 
<form method="Link" Action="Sankranthi_Reserv2.asp"> 
<input disabled name="copy of hp" maxlength="8" style="width:100px;height:25px;" type="text" id="copy_to" > 

</form> 


<p><!-- #include virtual="/sts/include/footer.asp" --> 

    <input type="hidden" name="pageNumber" value="0"> 
    <input type="hidden" name="backupCache" value=""> 
<script type="text/javascript"> 

     (function() { 
var divs = document.getElementById('ss-form'). 
getElementsByTagName('div'); 
var numDivs = divs.length; 
for (var j = 0; j < numDivs; j++) { 
if (divs[j].className == 'errorbox-bad') { 
divs[j].lastChild.firstChild.lastChild.focus(); 
return; 
} 
} 
for (var i = 0; i < numDivs; i++) { 
var div = divs[i]; 
if (div.className == 'ss-form-entry' && 
div.firstChild && 
div.firstChild.className == 'ss-q-title') { 
div.lastChild.focus(); 
return; 
} 
} 

Como se puede ver desde arriba, esta es la primera página y en la segunda página en la que se refería a Sankranthi_Reserv2.asp en la segunda forma. Quiero pasar el valor del cuadro de texto allí, por lo que el problema es que el primer formulario se envía a Google Docs y almacena los datos, pero el segundo formulario necesita pasar el valor de la caja de texto del número de teléfono al valor de la siguiente página, pero solo hay un botón ENVIAR.

+2

¿Podría simplificar su código de muestra eliminando detalles irrelevantes? Es difícil de entender este. –

+0

lo siento hombre allí código más corto, pero digo que todo está funcionando bien, excepto el problema que mencioné sobre un botón enviar para dos formularios y el segundo formulario enviar valores a otra página mientras el primer formulario enviando los valores de los cuadros de texto a Google hojas de cálculo..tks – JackyBoi

+1

Todavía veo mucha información irrelevante. ¿Podría hacer que sea 10-15 líneas cortas? –

Respuesta

7

Para enviar dos formularios, deberá usar Ajax. Como después de usar la página form.submit() cargará la URL de acción para ese formulario. por lo que tendrá que hacer eso de forma asíncrona.

Para que pueda enviar ambas solicitudes de forma asincrónica o enviar una solicitud de forma asincrónica y después de su éxito envíe la segunda forma.

function submitTwoForms() { 
var dataObject = {"form1 Data with name as key and value "}; 
    $.ajax({ 
     url: "test.html", 
     data : dataObject, 
     type : "GET", 
     success: function(){ 
     $("#form2").submit(); //assuming id of second form is form2 
     } 
    }); 
    return false; //to prevent submit 
} 

Puede enlazar esta función submitTwoForms() en el que un botón de enviar. Usando

$('#form1').submit(function() { 
    submitTwoForms(); 
    return false; 
}); 

Pero, si usted no quiere hacer todo esto, se puede utilizar Jquery form plugin a enviar el formulario utilizando Ajax.

+0

Sugeriría usar "event.preventDefault();" sobre "return false;" Pero no hay argumento al respecto que funcione correctamente :-) – Flater

+0

Pradeep Me preguntaba si esta línea cambiaría "{" form1 Data con nombre como clave y valor "};" a este derecho "document.getobjectbyname (" form1 ") ...? Pero como no estoy seguro si ha visto mi código en la primera publicación porque mis dos formularios usan métodos diferentes, uno es POST y el otro es LINK. formulario ya que está utilizando el método LINK para que envíe los datos en el enlace html (sé que está expuesto, está bien), así que no estoy seguro de qué reemplazar con su línea de código ... por favor, eche un vistazo a mi código arriba y consejos adicionales. Tks – JackyBoi

+1

@JackyBoi He usado esa línea como marcador de posición. Como, tendrá que escribir el código para crear esa variable (si hay dos entradas, entonces cada nombre de cada entrada será 'clave' y su valor será el valor de la tecla correspondiente). Para muchas variables será tedioso que muchos usen el complemento, pero en su caso usted puede crear directamente ese objeto como '{inputname:" value "}' poniendo el nombre de las entradas y su valor por ' documento.getELementByID' – Pradeep

8

Algo como esto funcionaría:

$('#form1_submit_button').click(function(){ 
    $('form').each(function(){ 
     $(this).submit(); 
    }); 
}); 

Alternativa:

$('#form1_submit_button').click(function(){ 
    $('#form1 #form2 #form3').submit(); 
}); 
+0

por favor mira el siguiente comentario más reciente debe corresponder al mismo tiempo como este comentario. Estoy usando dos métodos diferentes para ambas formas – JackyBoi

-2

la forma más sencilla que he encontrado es algo como esto

<form method='post' action='whatever?whatever1=blah&whatever2=blah'> 
<?php 
header ("Location: http://example.com/whatever.html"); 
?> 

Esto va a hacer la acción de la formulario (sin mostrarlo en su navegador), luego redirija a la página del encabezado.

Cuestiones relacionadas