web-dev-qa-db-de.com

Fehler "Senden ist keine Funktion" in JavaScript

Kann mir jemand sagen, was mit diesem Code schief geht? Ich habe versucht, ein Formular mit JavaScript zu senden, aber es wird ein Fehler ". Weitere Informationen zum Code finden Sie unten:

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

Ich habe auch folgendes versucht:

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

Beide zeigen mir den gleichen Fehler :(

222
Jin Yong

submit ist keine Funktion

bedeutet, dass Sie Ihren Submit-Button oder ein anderes Element submit benannt haben. Benennen Sie die Schaltfläche in btnSubmit um und Ihr Anruf funktioniert auf magische Weise. 

Wenn Sie den Button "Senden" benennen, überschreiben Sie die Funktion "submit()" im Formular. 

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: Ich habe versehentlich die IDs ausgetauscht

11
Chad Grant

Stellen Sie sicher, dass es kein anderes Formular mit demselben Namen gibt, und stellen Sie sicher, dass das Formular keinen Namen = "submit" oder id = "submit" enthält.

7
gopeca

Ich hatte das gleiche Problem, als ich eine MVC-Anwendung unter Verwendung von Masterseiten erstellte. Versucht, nach einem Element mit "Submit" als Namen zu suchen, wie oben erwähnt, aber es war nicht der Fall. 

In meinem Fall wurden mehrere Tags auf meiner Seite erstellt. Es gab also Probleme mit dem richtigen Formular.

Um dies zu umgehen, lasse ich die Schaltfläche verwenden, welches Formularobjekt verwendet werden soll:

onclick="return SubmitForm(this.form)"

und mit den js:

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

Wenn Sie keine Gelegenheit haben, name="submit" zu ändern, können Sie das Formular auch auf folgende Weise absenden:

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

Dieses Thema hat bereits viele Antworten, aber die für mich beste (und einfachste - eine Zeile!) War eine Änderung des Kommentars von Neil E. Pearson vom 21. April 2013:

Wenn Ihre Submit-Schaltfläche nicht mehr #submit ist, können Sie dies umgehen, indem Sie die submit () -Methode einer anderen Formularinstanz stehlen.

Meine Modifikation seiner Methode und was bei mir funktioniert hat:

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

2
jlemley

In der Tat ist die Lösung sehr einfach ...

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>

Lösung:

    <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

wenn Sie einem Formularelement den Namen "Submit" geben, wird einfach die Submit-Eigenschaft beschattet. Stellen Sie sicher, dass Sie kein Formularelement mit dem Namen Submit haben, und Sie sollten in der Lage sein, auf die Submit-Funktion zuzugreifen. 

1
aeid

Mögliche Lösungen -
1.Stellen Sie sicher, dass Sie kein anderes Element mit Name/ID als Submit haben.
2.Versuche die Funktion als onClick = "return submitAction();" aufzurufen
3 .document.getElementById("form-name").submit();

1
Ram Thota

Die Lösung für mich war, das "form" -Attribut der Schaltfläche festzulegen

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

oder ist js:

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

Sie sollten diesen Code verwenden:

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

0
AnilSengul

Was ich verwendet habe, ist 

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

Nur weil alles andere nicht funktioniert hat.

0
compraspro.com