Wie reiche ich ein Formular mit Javascript ein?

190

Ich habe ein Formular mit ID, theFormdas das folgende div mit einem Senden-Button enthält:

<div id="placeOrder" 
     style="text-align: right; width: 100%; background-color: white;">
    <button type="submit" 
            class='input_submit' 
            style="margin-right: 15px;" 
            onClick="placeOrder()">Place Order
    </button>
</div>

Wenn Sie darauf klicken, wird die Funktion placeOrder()aufgerufen. Die Funktion ändert das innerHTML des obigen Divs in "Verarbeitung ..." (daher ist die Schaltfläche "Senden" jetzt weg).

Der obige Code funktioniert, aber jetzt ist das Problem, dass ich das Formular nicht zum Senden bekommen kann! Ich habe versucht, dies in die placeOrder()Funktion einzufügen:

document.theForm.submit();

Das geht aber nicht

Wie kann ich das Formular zum Absenden bekommen?

Nate
quelle
3
Ich nehme an, Sie haben <form>irgendwo auf Ihrer Seite ein Tag.
Justin808
Ich sehe keine <form> im Code.
Dotoree
1
Was meinst du damit: Die Funktion ändert das innerHTML des obigen Divs in "Verarbeitung ..." (so dass die Senden-Schaltfläche jetzt weg ist). und würde es Ihnen etwas ausmachen, diese Logik zu teilen. Übrigens, wenn Sie eine Schaltfläche zum Senden haben (irgendwo unten mit name = submit), funktioniert die Funktion theform.submit () nicht. Bitte klären Sie Ihre Frage, indem Sie das <form> -Tag hinzufügen, wie Sie es in Ihrem Code haben. Sie könnten jsfiddle.net
sakhunzai
5
... wenn Sie einen Senden-Button haben (irgendwo unten mit Name = Senden) ... Dies hat mein Problem gelöst! Es war <input type = "button" name = "submit" ..., aber es blockierte immer noch das Senden des Formulars durch Javascript.
Nikolay Ivanov

Antworten:

136

Setzen Sie das nameAttribut Ihres Formulars auf "theForm"und Ihr Code funktioniert.

Andrew Hare
quelle
14
Dies mag einigen sehr offensichtlich erscheinen, aber ich hatte eine Schaltfläche mit dem Namen und der ID "Submit" und document.theForm.submit()meldete einen Fehler. Nachdem ich meine Schaltfläche umbenannt hatte, funktionierte der Code perfekt.
Jonathan
1
@ Jonathan Wie heißt der Button, den du hattest? Coz sollte gemäß api.jquery.com/submit untergeordnete Elemente eines Formulars keine Eingabenamen oder IDs verwenden, die mit den Eigenschaften eines Formulars in Konflikt stehen.
Keya
106

Sie können verwenden ...

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

... aber nicht ersetzen innerHTML. Sie könnten die Form verstecken und dann eine einfügen Verarbeitung ... span das wird erscheinen an seinem Platz.

var form = document.getElementById('theForm');

form.style.display = 'none';

var processing = document.createElement('span');

processing.appendChild(document.createTextNode('processing ...'));

form.parentNode.insertBefore(processing, form);
Alex
quelle
Wie können Sie angeben, wohin das Formular gesendet werden soll? In meinem Fall möchte ich beispielsweise, dass der Inhalt per E-Mail an mich
gesendet wird
@Imray Sie möchten wahrscheinlich, dass serverseitiger Code dies für Sie erledigt.
Alex
@CodyBugstein legt action="/{controller}/{action-method}" method="post"Attribute des Formulars fest, das Sie veröffentlichen möchten .
Barnes
2
da mein Formularname printoffersForm ist, ist auch die ID identisch. document.getElementById('printoffersForm').submit();aber ich gebe mir Fehler einreichen ist keine Funktion
Madhuri Patel
@MadhuriPatel Könnten Sie Ihren Submit-Button auch Submit nennen? Siehe Antwort stackoverflow.com/questions/833032/…
rbassett
37

In meinem Fall funktioniert es perfekt.

document.getElementById("form1").submit();

Sie können es auch in der folgenden Funktion verwenden:

function formSubmit()
{
     document.getElementById("form1").submit();
} 
Chintan Thummar
quelle
Wird dies Formularwerte von einem inputTag senden ?
Simanacci
@roy Ja, es werden Formularwerte von Eingabe-Tags gesendet.
Chintan Thummar
2
@ChintanThummar und dann können Sie die Formularübermittlung mit document.getElementById ("form1") bearbeiten. Onsubmit = function () {// Sie können Ajax-Code hier verwenden, um das Formular // ohne Aktualisierung der Seite zu
senden
Ich habe das nicht versucht, aber es sieht schlimmer aus als das, was ich bereitgestellt hatte. Danke;)
Chintan Thummar
12
document.forms["name of your form"].submit();

oder

document.getElementById("form id").submit();

Sie können alles versuchen .. dies wird definitiv funktionieren ..

Aruna
quelle
5

Es ist ein alter Beitrag, aber ich werde die Art und Weise verlassen, wie ich das Formular abschicke, ohne ein nameTag im Formular zu verwenden:

HTML

<button type="submit" onClick="placeOrder(this.form)">Place Order</button>

JS

function placeOrder(form){
    form.submit();
}

Hoffe, diese Lösung kann jemand anderem helfen. TQ

SkyClasher
quelle
3

HTML

<!-- change id attribute to name  -->

<form method="post" action="yourUrl" name="theForm">
    <button onclick="placeOrder()">Place Order</button>
</form>

JavaScript

function placeOrder () {
    document.theForm.submit()
}
Chandan Gupta
quelle
4
Bitte fügen Sie Ihrer Antwort eine Erklärung hinzu.
Sampada
Dies verbessert nicht die Qualität der bereits gegebenen Antworten.
Randy
2

Wenn Ihr Formular keine ID hat, aber einen Klassennamen wie theForm hat, können Sie es mit der folgenden Anweisung senden:

document.getElementsByClassName("theForm")[0].submit();
Bimal Jha
quelle
Was ist mit mehr Formularen mit demselben Klassennamen oben?
Jack1987
0

Ich habe eine einfache Lösung gefunden, indem ich ein einfaches Formular verwendet habe, das auf meiner Website versteckt ist und dieselben Informationen enthält, mit denen sich die Benutzer angemeldet haben. Beispiel Wenn Sie möchten, dass ein Benutzer in diesem Formular angemeldet ist, können Sie dem folgenden Formular Folgendes hinzufügen.

<input type="checkbox" name="autologin" id="autologin" />

Soweit ich weiß, bin ich der Erste, der ein Formular versteckt und über einen Link abruft. Es gibt den Link, der ein verstecktes Formular mit den Informationen sendet. Nicht 100% sicher, wenn Sie keine automatischen Anmeldemethoden auf Ihrer Website mit Passwörtern mögen, die sich in einem versteckten Formular-Passwort-Textbereich befinden ......

Okay, hier ist die Arbeit. Nehmen wir an, es $siteidist das Konto und $sitepwdas Passwort.

Machen Sie zuerst das Formular in Ihrem PHP-Skript, wenn Sie HTML nicht mögen, verwenden Sie minimale Daten und geben Sie den Wert in einem versteckten Formular wieder. Ich verwende nur einen PHP-Wert und echo an einer beliebigen Stelle neben der Formularschaltfläche, da Sie ihn nicht sehen können.

PHP-Formular zum Drucken

$hidden_forum = '
<form id="alt_forum_login" action="./forum/ucp.php?mode=login" method="post" style="display:none;">
    <input type="text" name="username" id="username" value="'.strtolower($siteid).'" title="Username" />
    <input type="password" name="password" id="password" value="'.$sitepw.'" title="Password" />
</form>';

PHP und Link zum Absenden des Formulars

<?php print $hidden_forum; ?>
<pre><a href="#forum" onClick="javascript: document.getElementById('alt_forum_login').submit();">Forum</a></pre>
AgeofTalisman
quelle
Richtig, Sie müssen ein Formular senden, aber der Link wird nicht in meiner Codierung angezeigt. Tut mir leid, aber machen Sie einen Klick oder href = javascript: document.getElementById ('alt_forum_login').
Submit
Die Frage ist über Javascript, es gibt überhaupt keine Notwendigkeit für den PHP-Code
Shedokan
0

Sie können den folgenden Code verwenden, um das Formular mit Javascript zu senden.

document.getElementById('FormID').submit();
Abhijeet Navgire
quelle
-1
<html>
<body>

<p>Enter some text in the fields below, then press the "Submit form" button to submit the form.</p>

<form id="myForm" action="/action_page.php">
  First name: <input type="text" name="fname"><br>
  Last name: <input type="text" name="lname"><br><br>
  <input type="button" onclick="myFunction()" value="Submit form">
</form>

<script>
function myFunction() {
    document.getElementById("myForm").submit();
}
</script>

</body>
</html>
Jay Nagar
quelle
Können Sie eine richtige Antwort teilen, die beim nächsten Mal nur den relevanten Teil und eine Erklärung enthält?
Nico Haase
Diese Antwort könnte für einige stackoverflow.com/a/54619085/7003760
Mayer Spitzer