Tengo un formulario que tiene dos botones para enviar. Deseo enviar el formulario manualmente usando JavaScript y tener el botón de entrada utilizado para enviar el formulario publicado junto con los otros elementos del formulario, como lo sería si el formulario se enviara automáticamente. Hay bastante charla sobre este tema, pero no puedo encontrar una respuesta.Manualmente enviando un formulario usando JavaScript no envía el botón de enviar
<form method="post" action="echoToScreenAndLog.jsp" id="form1">
<input id="field1" name="field1"/>
<input type="text" size="20" id="field2" name="field2"/>
<input type="submit" value="Do One" name="sub1_name" id="sub1_id"/>
<input type="submit" value="Do Two" name="sub2_name" id="sub2_id"/>
</form>
Cuando se envía el formulario anterior utilizando el botón "Haga una", los parámetros son enviados field1="xxx"
, field2="yyy"
, sub1_name="Do One"
.
Pero quiero para enviar el formulario de forma manual ...
<form method="post" action="echoToScreenAndLog.jsp" id="form1">
<input id="field1" name="field1"/>
<input type="text" size="20" id="field2" name="field2"/>
<input type="submit" value="Do One" name="sub1_name" id="sub1_id"/>
<input type="submit" value="Do Two" name="sub2_name" id="sub2_id"/>
</form>
<script type="text/javascript">
var btn = document.getElementById('sub1_id');
btn.onclick=function() {
return mySubmit(document.getElementById('form1'), ...);
}
</script>
pero haciendo un manual de presentación de la forma en la función mySubmit
no publicar el parámetro sub1_name
. Puedo entender eso. Pasé por alto el envío, por lo que el formulario no se envía con los botones y, por lo tanto, no tiene sentido publicar un parámetro que represente el botón utilizado para enviar el formulario.
Cuando miro los elementos del formulario en el controlador onclick
, puedo ver ambos botones. No estoy demasiado sorprendido por eso tampoco, son elementos en el formulario, pero lo que no entiendo es que si agrego un elemento dentro de mi controlador onclick
, entonces el elemento que agrego se publicará y los dos botones de envío originales no están publicados. Sólo para completar el cuadro, aquí está el código que añade el elemento:
<script type="text/javascript">
var btn = document.getElementById('sub1_id');
btn.onclick=function() {
var f = document.getElementById('form1');
var s = document.createElement("input");
s.type="hidden"; s.name="xsubmit_name"; s.value="Bob"; s.id="xsubmit_id";
f.appendChild(s);
// s gets posted
return mySubmit(f, ...);
}
</script>
Agregar el elemento de entrada podría funcionar para mí, pero estoy confundido cómo el navegador sabe para publicar mi elemento añadido y no los dos de entrada original elementos.
Gracias.
f es sólo un puntero a la forma, por lo que las actualizaciones a través. Solo tiene que capturar el botón que activó su función y ponerlo en el elemento. ¿Por qué te preocuparía agregar tu presentación personalizada de todos modos? Creo que podrías intentar agregar un método onclick que devuelva verdadero o falso, decidiendo el clima o no enviando los datos por el método predeterminado y solo para verificar allí y ver el envío real al navegador. Espero que esto funcione, al menos para hipervínculos. – ted
¿Qué exactamente hace 'mySubmit'? ¿Hay algún motivo por el que no pueda usar el formulario 'onsubmit' y deje que el formulario se envíe normalmente después de hacer todo lo que necesita hacer en su script? – RoToRa