¿Alguien puede decirme qué está mal con este código? Intenté enviar un formulario con JavaScript, pero se muestra el error ".submit no es una función". Consulte a continuación para obtener 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 :(
javascript
html
dom
submit
Jin Yong
fuente
fuente
Respuestas:
significa que usted nombró su botón de envío o algún otro elemento
submit
. Cambie el nombre del botón abtnSubmit
y su llamada funcionará mágicamente.Cuando nombra el botón enviar, anula la
submit()
función en el formulario.fuente
#submit
, lo puede conseguir alrededor por el robo de otra instancia de formulariosubmit()
método, por ejemplo:document.createElement('form').submit.call(document.frmProduct)
.EDITAR: accidentalmente cambié la identificación alrededor
fuente
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.
fuente
Si no tiene la oportunidad de cambiar
name="submit"
, también puede enviar el formulario de esta manera:fuente
HTMLFormElement.prototype.submit.call(form)
también funcionaTuve el mismo problema cuando estaba creando una aplicación MVC usando páginas maestras. Intenté buscar un elemento con 'enviar' como nombres como se mencionó anteriormente, pero no fue el caso.
Para mi caso, creó varias etiquetas en mi página, por lo que hubo algunos problemas con la forma correcta.
Para evitar esto, dejaré que el botón maneje qué objeto de formulario usar:
y con el js:
fuente
Este tema ya tiene muchas respuestas, pero la que mejor funcionó (¡y más simple - una línea!) Para mí fue una modificación del comentario hecho por Neil E. Pearson del 21 de abril de 2013:
Mi modificación a su método, y lo que funcionó para mí:
document.createElement('form').submit.call(document.getElementById(frmProduct));
fuente
dar a un elemento de formulario un nombre de envío simplemente sombreará la propiedad de envío. asegúrese de que no tiene un elemento de formulario con el nombre submit y que debería poder acceder a la función de envío muy bien.
fuente
De hecho, la solución es muy fácil ...
Original:
Solución:
fuente
Deberías usar este código:
fuente
Lo que usé es
Solo porque todo lo demás no funcionó.
fuente
La solución para mí fue establecer el atributo "formulario" del botón
o es js:
fuente
Posibles soluciones:
1.Asegúrese de no tener ningún otro elemento con nombre / id como envío.
Intenta llamar a la función como
onClick = "return submitAction();"
3.
document.getElementById("form-name").submit();
fuente
Puedes probar
¿No tienes más de una forma con el mismo nombre?
fuente
Use getElementById:
fuente