Come inviare un modulo utilizzando JavaScript?


190

Ho un modulo con ID theFormche ha il seguente div con un pulsante di invio all'interno:

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

Quando si fa clic, placeOrder()viene chiamata la funzione . La funzione cambia il HTML interno del div precedente in "elaborazione ..." (quindi il pulsante di invio non è più disponibile).

Il codice sopra funziona, ma ora il problema è che non riesco a ottenere il modulo da inviare! Ho provato a metterlo nella placeOrder()funzione:

document.theForm.submit();

Ma questo non funziona.

Come posso ottenere il modulo da inviare?


3
Presumo che tu abbia un <form>tag da qualche parte sulla tua pagina.
Justin808,

Non vedo alcun <form> nel codice.
dotoree,

1
cosa intendi con: la funzione cambia il innerHTML del div precedente in "elaborazione ..." (quindi il pulsante di invio non è più disponibile). e ti dispiacerebbe condividere quella logica. A proposito, se hai un pulsante di invio (da qualche parte in basso con nome = submit), la funzione theform.submit () non funzionerà. Chiarisci la tua domanda aggiungendo il tag <form> come hai nel tuo codice. Puoi usare jsfiddle.net
sakhunzai il

5
... se hai un pulsante di invio (da qualche parte in basso con name = submit) ... Questo ha risolto il mio problema! Era <input type = "button" name = "submit" ..., ma stava ancora bloccando il javascript dall'invio del modulo.
Nikolay Ivanov,

Risposte:


136

Impostare l' nameattributo del modulo su "theForm"e il codice funzionerà.


14
Questo può sembrare super-ovvio per alcuni, ma avevo un pulsante con il nome e l'id "invia" e ho document.theForm.submit()segnalato un errore. Dopo aver rinominato il mio pulsante, il codice ha funzionato perfettamente.
Jonathan,

1
@Jonathan Qual è il nome del pulsante che hai avuto? Coz, come da api.jquery.com/submit, gli elementi figlio di un modulo non devono utilizzare nomi di input o ID in conflitto con le proprietà di un modulo.
keya,

106

Puoi usare...

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

... ma non sostituire il innerHTML. È possibile nascondere il modulo e quindi inserire un'elaborazione ... span che verrà visualizzata al suo posto.

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

form.style.display = 'none';

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

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

form.parentNode.insertBefore(processing, form);

Come si dice dove inviare il modulo? Ad esempio, nel mio caso, desidero che il contenuto mi
venga

@Imray Probabilmente vorrai che il codice lato server lo faccia per te.
alex

@CodyBugstein imposta gli action="/{controller}/{action-method}" method="post"attributi del modulo che stai tentando di pubblicare.
barnes,

2
poiché il mio nome del modulo è printoffersForm e id è lo stesso. document.getElementById('printoffersForm').submit();ma mi dà l'errore di inviare non è una funzione
Madhuri Patel,

@MadhuriPatel Potresti avere il tuo pulsante di invio anche chiamato submit? Si veda la risposta stackoverflow.com/questions/833032/...
rbassett

37

Funziona perfettamente nel mio caso.

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

Inoltre, puoi usarlo in funzione come di seguito:

function formSubmit()
{
     document.getElementById("form1").submit();
} 

questo invierà i valori del modulo da un inputtag?
simanacci,

@roy Sì, invierà i valori dei moduli dai tag di input.
Chintan Thummar,

2
@ChintanThummar e quindi puoi gestire l' invio del modulo utilizzando document.getElementById ("form1"). Onsubmit = function () {// Puoi utilizzare il codice Ajax qui per inviare il modulo // senza aggiornare la pagina}
Shubham Kumar

Non l'ho provato ma sembra pastella di quello che avevo fornito. Grazie;)
Chintan Thummar,

12
document.forms["name of your form"].submit();

o

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

Puoi provare uno di questi..questo funzionerà sicuramente ..


5

È un vecchio post, ma lascerò il mio modo di inviare il modulo senza utilizzare name tag all'interno del modulo:

HTML

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

JS

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

Spero che questa soluzione possa aiutare qualcun altro. TQ


4

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()
}

4
Aggiungi una spiegazione alla tua risposta.
Sampada,

Ciò non migliora la qualità delle risposte che sono già state fornite.
Randy,

È l'unica risposta che mostra il nome del modulo nell'html effettivo per la definizione del modulo. Inoltre, è semplice e diretto.
Tim Bird,

2

Se il modulo non ha alcun ID ma ha un nome di classe come theForm, è possibile utilizzare l'istruzione seguente per inviarlo:

document.getElementsByClassName("theForm")[0].submit();

che dire ci sono più moduli con lo stesso nome di classe sopra?
Jack1987,

0

Ho trovato una soluzione semplice utilizzando un semplice modulo nascosto sul mio sito Web con le stesse informazioni con cui gli utenti hanno effettuato l'accesso. Esempio Se si desidera che un utente abbia effettuato l'accesso in questo modulo, è possibile aggiungere qualcosa di simile al seguente modulo seguente.

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

per quanto ne so sono il primo a nascondere un modulo e inviarlo facendo clic su un collegamento. C'è il link che invia un modulo nascosto con le informazioni. Non sicuro al 100% se non ti piacciono i metodi di accesso automatico sul tuo sito Web con le password che si trovano in un'area di testo della password del modulo nascosto ...

Va bene, ecco il lavoro. Diciamo che $siteidè l'account ed $sitepwè la password.

Prima crea il modulo nel tuo script php se non ti piace HTML in esso usa dati minimi quindi echo nel valore in una forma nascosta. Uso solo un valore php ed echo ovunque io voglia il pref accanto al pulsante del modulo come non riesci a vederlo.

Modulo PHP da stampare

$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 e Link per inviare il modulo

<?php print $hidden_forum; ?>
<pre><a href="#forum" onClick="javascript: document.getElementById('alt_forum_login').submit();">Forum</a></pre>

È vero che devi inviare il modulo ma il link non comparirà nella mia codifica scusa ma fai un clic o href = javascript: document.getElementById ('alt_forum_login').
Submit

La domanda riguarda javascript, non è necessario il codice php
Shedokan,

0

puoi utilizzare il codice seguente per inviare il modulo utilizzando Javascript;

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

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

Puoi condividere una risposta corretta che contenga solo la parte pertinente e qualche spiegazione la prossima volta?
Nico Haase,

Questa risposta potrebbe essere utile per alcuni stackoverflow.com/a/54619085/7003760
Mayer Spitzer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.