64 votes

Changer la valeur de l'input et soumettre le formulaire en JavaScript

Je travaille actuellement sur un formulaire de base. Lorsque vous appuyez sur le bouton de soumission, il devrait d'abord changer la valeur d'un champ, puis soumettre le formulaire comme d'habitude. Tout ressemble un peu à ceci :

Et voici où j'en suis avec le code JavaScript. Il change la valeur de "myinput" en 1, mais ne soumet pas le formulaire.

function DoSubmit(){
  document.myform.myinput.value = '1';
  document.getElementById("myform").submit();
}

0 votes

Pourquoi ne pas simplement modifier la valeur de mon champ "myinput" à 1 dans le HTML ?

54 votes

Bien sûr je pourrais le faire, mais si c'est ce que je voulais je ne l'aurais pas demandé

0 votes

@Paparappa Cette réponse était géniale!

92voto

valderman Points 1537

Vous pourriez faire quelque chose comme ceci à la place :

Et ensuite modifier votre fonction DoSubmit pour simplement renvoyer true, indiquant que "c'est bon, vous pouvez maintenant soumettre le formulaire" au navigateur :

function DoSubmit(){
  document.myform.myinput.value = '1';
  return true;
}

Je vous conseille également d'être prudent avec l'utilisation des événements onclick sur un bouton de soumission ; l'ordre des événements n'est pas immédiatement évident, et votre rappel ne sera pas appelé si l'utilisateur soumet en appuyant, par exemple, sur Entrée dans une zone de texte.

3 votes

Non, vous pouvez accéder aux formulaires et à leurs éléments enfants en utilisant leurs attributs name de la sorte.

16 votes

+1 pour avoir souligné que les événements onclick ne sont pas déclenchés lors de la soumission par d'autres moyens que l'appui sur le bouton lui-même.

7voto

Claude Schlesser Points 493
document.getElementById("myform").submit();

Cela ne fonctionnera pas car votre balise de formulaire n'a pas d'identifiant.

Changez-le comme ceci et cela devrait fonctionner:

0 votes

Oh, il a un identifiant, je suis désolé d'avoir été un peu rapide dans le codage. J'ai modifié la publication précédente.

7voto

Said Marar Points 18

Voici un code simple. Vous devez définir un id pour votre entrée. Appelez-le 'myInput' :

var myform = document.getElementById('myform');
myform.onsubmit = function(){
    document.getElementById('myInput').value = '1';
    myform.submit();
};

5voto

TheGrimCoder Points 2285

Non. Lorsque votre type de saisie est submit, vous devez avoir un événement onsubmit déclaré dans le balisage, puis apporter les modifications souhaitées. Cela signifie avoir un événement onsubmit défini dans la balise de votre formulaire.

Autrement, changez le type de saisie en bouton, puis définissez un événement onclick pour ce bouton.

2voto

Chris Snowden Points 2851

Vous essayez d'accéder à un élément basé sur l'attribut name qui fonctionne pour les retours au serveur, mais JavaScript répond à l'attribut id. Ajoutez un id avec la même valeur que name et tout devrait fonctionner correctement.

function DoSubmit(){
  document.getElementById("myinput").value = '1';
  return true;
}

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