web-dev-qa-db-fra.com

Erreur "Soumettre n'est pas une fonction" en JavaScript

Quelqu'un peut-il me dire ce qui ne va pas avec ce code? J'ai essayé de soumettre un formulaire avec JavaScript, mais une erreur ". Soumettre n'est pas une fonction" affichée. Voir ci-dessous pour plus de détails sur le code:

<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>

J'ai aussi essayé ceci:

<script type="text/javascript">
    function submitAction()
    {
        document.forms["frmProduct"].submit();
    }
</script>

Les deux me montrent la même erreur :(

222
Jin Yong

soumettre n'est pas une fonction

signifie que vous avez nommé votre bouton d'envoi ou un autre élément submit. Renommez le bouton en btnSubmit et votre appel fonctionnera comme par magie. 

Lorsque vous nommez le bouton submit, vous remplacez la fonction submit() sur le formulaire. 

615
epascarello
<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>

EDIT: j'ai accidentellement échangé l'identifiant

11
Chad Grant

Assurez-vous qu'il n'y a pas d'autre formulaire avec le même nom et assurez-vous qu'il n'y a pas name = "submit" ou id = "submit" dans le formulaire.

7
gopeca

J'avais le même problème lorsque je créais une application MVC en utilisant des pages maîtres . J'ai essayé de rechercher un élément avec 'submit' en tant que noms mentionnés ci-dessus, mais ce n'était pas le cas. 

Dans mon cas, cela a créé plusieurs tags sur ma page, ce qui a posé quelques problèmes pour faire référence au bon formulaire.

Pour contourner ce problème, je laisserai le bouton gérer quel objet de formulaire utiliser:

onclick="return SubmitForm(this.form)"

et avec le js:

function SubmitForm(frm) {
    frm.submit();
}
5
Quangahh

Si vous n'avez pas la possibilité de modifier name="submit", vous pouvez également soumettre le formulaire de cette façon:

function submitForm(form) {
    var submitFormFunction = Object.getPrototypeOf(form).submit;
    submitFormFunction.call(form);
}
5
Terbiy

En fait, la solution est très simple ...

Original:

    <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>

Solution:

    <form action="product.php" method="get" name="frmProduct" id="frmProduct" 
enctype="multipart/form-data">
</form>

<!-- Place the button here -->
<input onclick="submitAction()" id="submit_value" type="button" 
    name="submit_value" value="">

<script type="text/javascript">
    function submitAction()
    {
        document.frmProduct.submit();
    }
</script>
2
Zurc Soirrab

attribuer un nom à submit à un élément de formulaire va simplement masquer la propriété de soumission .. Assurez-vous de ne pas avoir d'élément de formulaire portant le nom de soumission et vous devriez pouvoir accéder à la fonction de soumission parfaitement 

1
aeid

La solution pour moi était de définir l'attribut "formulaire" du bouton

<form id="form_id_name"><button name="btnSubmit" form="form_id_name" /></form>

ou est js:

YOURFORMOBJ.getElementsByTagName("button")[0].setAttribute("form", "form_id_name");
YOURFORMOBJ.submit();
0
ProtonIonNeutron

Vous devriez utiliser ce code:

$(document).on("ready", function () {
       
        document.frmProduct.submit();
    });

0
AnilSengul

Ce que j'ai utilisé est 

var enviar = document.getElementById("enviar");
enviar.type = "submit"; 

Juste parce que tout le reste n'a pas fonctionné.

0
compraspro.com