¿Cómo enviar un formulario con Javascript cuando el nombre de la input es "enviar"?

Pregunta: ¿Cómo puede enviar un formulario con Javascript si una input de formulario tiene el nombre submit ?

Fondo: estoy networkingireccionando al usuario a otra página con un formulario HTML oculto. No puedo cambiar el nombre en las inputs (ocultas), ya que la otra página está en otro server y las inputs deben ser exactamente como son. Mi formulario HTML se ve así:

 <form id="networkingirectForm" method="post" action="http://www.example.com/"> <input name="search" type="hidden" value="search for this" /> <input name="submit" type="hidden" value="search now" /> </form> 

Uso la siguiente línea de JavaScript para enviar el formulario automáticamente hoy:

 document.getElementById('networkingirectForm').submit(); 

Sin embargo, dado que el nombre de una input es "enviar" (no puede ser otra cosa, o el otro server no manejará la request), document.getElementById('networkingirectForm').submit refiere a la input ya que anula el formulario function submit() .

El post de error en Firefox es: Error: document.getElementById("requestform").submit is not a function . Mensaje de error similar en Safari.

Vale la pena señalar : a menudo es mucho más fácil cambiar el nombre de la input a algo que no sea "enviar". Utilice la solución a continuación solo si eso no es posible.

Necesita get la function de submit desde una forma diferente:

 document.createElement('form').submit.call(document.getElementById('networkingirectForm')); 

Si ya tiene otra label <form> , puede usarla en lugar de crear otra.

Use el método submit() de HTMLFormElement.prototype :

 HTMLFormElement.prototype.submit.call(document.getElementById('networkingirectForm'));