287 votes

Comment puis-je soumettre un formulaire en utilisant JavaScript ?

J'ai un formulaire avec l'id theForm qui contient le div suivant avec un bouton d'envoi à l'intérieur :

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

Lorsqu'on clique dessus, la fonction placeOrder() est appelé. La fonction change le innerHTML du div ci-dessus en "processing ...". (le bouton d'envoi a donc disparu).

Le code ci-dessus fonctionne, mais maintenant le problème est que je n'arrive pas à soumettre le formulaire ! J'ai essayé de mettre ce code dans la section placeOrder() fonction :

document.theForm.submit();

Mais ça ne marche pas.

Comment puis-je faire en sorte que le formulaire soit soumis ?

4 votes

Je suppose que vous avez un <form> à un endroit quelconque de votre page.

2 votes

Je ne vois pas de <form> dans le code.

1 votes

Que voulez-vous dire par : La fonction modifie l'innerHTML du div ci-dessus pour qu'il devienne "processing ...". (donc le bouton submit a disparu). Pourriez-vous partager cette logique ? Par ailleurs, si vous avez un bouton d'envoi (quelque part en bas avec name=submit), la fonction theform.submit() ne fonctionnera pas. Veuillez clarifier votre question en ajoutant la balise <form> comme vous l'avez fait dans votre code. Vous pouvez utiliser jsfiddle.net

187voto

Andrew Hare Points 159332

Définissez le name de votre formulaire à "theForm" et votre code fonctionnera.

23 votes

Cela peut sembler évident pour certains, mais j'avais un bouton avec le nom et l'identifiant "submit", et document.theForm.submit() a signalé une erreur. Une fois que j'ai renommé mon bouton, le code a fonctionné parfaitement.

1 votes

@Jonathan Quel est le nom du bouton que vous aviez ? Coz, selon api.jquery.com/submit Les éléments enfants d'un formulaire ne doivent pas utiliser des noms ou des identifiants d'entrée qui entrent en conflit avec les propriétés d'un formulaire.

178voto

alex Points 186293

Vous pouvez utiliser...

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

...mais Ne le fais pas. remplacer le innerHTML . Vous pourriez masquer le formulaire et ensuite insérer un la transformation... span qui apparaître à sa place.

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

form.style.display = 'none';

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

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

form.parentNode.insertBefore(processing, form);

0 votes

Comment lui indiquer où envoyer le formulaire ? Par exemple, dans mon cas, je veux que le contenu me soit envoyé par courriel.

0 votes

@Imray Vous aurez probablement besoin d'un code côté serveur pour faire cela pour vous.

0 votes

@CodyBugstein set action="/{controller}/{action-method}" method="post" les attributs du formulaire que vous essayez d'afficher.

56voto

ChintanThummar Points 128

Cela fonctionne parfaitement dans mon cas.

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

Vous pouvez également l'utiliser dans une fonction comme ci-dessous :

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

0 votes

Est-ce que cela soumettra les valeurs du formulaire à partir d'un input tag ?

0 votes

Oui, il soumettra les valeurs du formulaire à partir des balises d'entrée.

2 votes

@ChintanThummar et ensuite vous pourrez vous occuper de la Formulaire de soumission using document.getElementById("form1").onsubmit = function(){ //Vous pouvez utiliser le code Ajax ici pour soumettre le formulaire // sans rafraîchir la page }

26voto

Aruna Points 11
document.forms["name of your form"].submit();

ou

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

Vous pouvez essayer tout ça... ça va certainement marcher...

14voto

SkyClasher Points 103

Je vais laisser la façon dont je le fais pour soumettre le formulaire sans utiliser la fonction name à l'intérieur du formulaire :

HTML

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

JavaScript

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X