forzar - submit javascript onclick
Error "Enviar no es una funciĆ³n" en JavaScript (12)
¿Alguien puede decirme qué está mal con este código? Intenté enviar un formulario con JavaScript, pero se muestra un error ".submit no es una función". Vea a continuación para más detalles del código:
<form action="product.php" method="get" name="frmProduct" id="frmProduct" enctype="multipart/form-data">
<input onclick="submitAction()" id="submit_value" type="button" name="submit_value" value="">
</form>
<script type="text/javascript">
function submitAction()
{
document.frmProduct.submit();
}
</script>
También probé esto:
<script type="text/javascript">
function submitAction()
{
document.forms["frmProduct"].submit();
}
</script>
Ambos me muestran el mismo error :(
enviar no es una función
significa que usted nombró su botón de envío o algún otro elemento de submit
. Cambie el nombre del botón a btnSubmit
y su llamada funcionará mágicamente.
Cuando nombre el botón enviar, anula la función submit()
en el formulario.
Asegúrese de que no haya otro formulario con el mismo nombre y asegúrese de que no haya name = "submit" o id = "submit" en el formulario.
Este tema ya tiene muchas respuestas, pero la que mejor funcionó (¡y la más simple, una sola línea!) Para mí fue una modificación del comentario hecho por Neil E. Pearson del 21 de abril de 2013:
Si está atascado con su botón de envío #submit, puede sortearlo robando el método submit () de otra instancia de formulario.
Mi modificación a su método, y lo que funcionó para mí:
document.createElement(''form'').submit.call(document.getElementById(frmProduct));
La solución para mí fue establecer el atributo "formulario" del botón
<form id="form_id_name"><button name="btnSubmit" form="form_id_name" /></form>
o es js:
YOURFORMOBJ.getElementsByTagName("button")[0].setAttribute("form", "form_id_name");
YOURFORMOBJ.submit();
Lo que utilicé es
var enviar = document.getElementById("enviar");
enviar.type = "submit";
Solo porque todo lo demás no funcionó.
Puedes probar
<form action="product.php" method="get" name="frmProduct" id="frmProduct" enctype="multipart/form-data">
<input onclick="submitAction(this)" id="submit_value" type="button" name="submit_value" value="">
</form>
<script type="text/javascript">
function submitAction(element)
{
element.form.submit();
}
</script>
¿No tienes más de una forma con el mismo nombre?
Si no tiene la oportunidad de cambiar name="submit"
, también puede enviar el formulario de esta manera:
function submitForm(form) {
var submitFormFunction = Object.getPrototypeOf(form).submit;
submitFormFunction.call(form);
}
Soluciones posibles -
1. Asegúrese de que no tiene ningún otro elemento con nombre / id como enviar.
2.Trate de llamar a la función como onClick = "return submitAction();"
3. document.getElementById("form-name").submit();
Tuve el mismo problema cuando estaba creando una aplicación MVC usando páginas maestras. Intenté buscar el elemento con ''enviar'' como nombres como se mencionó anteriormente, pero no fue el caso.
En mi caso, creó varias etiquetas en mi página, por lo que hubo algunos problemas al hacer referencia al formulario correcto.
Para evitar esto, dejaré que el botón maneje qué objeto de formulario usar:
onclick="return SubmitForm(this.form)"
y con los js:
function SubmitForm(frm) {
frm.submit();
}
Utilice getElementById:
document.getElementById (''frmProduct'').submit ()
dar a un elemento de formulario un nombre de enviar simplemente sombreará la propiedad de envío. asegúrese de no tener un elemento de formulario con el nombre de envío y debe poder acceder a la función de envío bien.
<form action="product.php" method="post" name="frmProduct" id="frmProduct" enctype="multipart/form-data">
<input id="submit_value" type="button" name="submit_value" value="">
</form>
<script type="text/javascript">
document.getElementById("submit_value").onclick = submitAction;
function submitAction()
{
document.getElementById("frmProduct").submit();
return false;
}
</script>
EDITAR: accidentalmente cambié la ID de alrededor