Changez la valeur de la saisie, puis soumettez le formulaire en JavaScript

Je travaille actuellement sur une forme de base. Ce que je veux faire avec ce formulaire, c'est que lorsque vous appuyez sur submit / button pour changer d'abord la valeur d'un champ, puis soumettre le formulaire comme d'habitude. Tout cela ressemble un peu à ceci:

<form name="myform" id="myform" action="action.php"> <input type="hidden" name="myinput" value="0" /> <input type="text" name="message" value="" /> <input type="submit" name="submit" onclick="DoSubmit()" /> </form> 

Et c'est jusqu'à quel point je suis venu avec le JavaScript. Il change la valeur de "myinput" à 1 mais ne soumet pas le formulaire. Je suis vraiment un noobie JavaScript, pardonnez-moi si ce n'est qu'une question trop simple, mais je ne l'ai pas vraiment réussi.

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

Vous pourriez faire quelque chose comme ça à la place:

 <form name="myform" action="action.php" onsubmit="DoSubmit();"> <input type="hidden" name="myinput" value="0" /> <input type="text" name="message" value="" /> <input type="submit" name="submit" /> </form> 

Ensuite, modifiez votre fonction DoSubmit pour simplement renvoyer true, indiquant que "c'est OK, maintenant vous pouvez envoyer le formulaire" au navigateur:

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

EDIT: Je voudrais également se méfier de 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 se soumet, par exemple, à un retour dans une zone de texte.

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

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

Changez-le comme ça et cela devrait fonctionner:

 <form name="myform" id="myform" action="action.php"> 

Non. Lorsque votre type de saisie est soumis, vous devriez avoir un événement onsubmit déclaré dans le balisage, puis faire les modifications souhaitées. En d'autres onsubmit , une sous- onsubmit définie dans votre balise de formulaire.

Sinon, modifiez le type d'entrée sur un bouton, puis définissez un événement onclick pour ce bouton.

Voici un code simple, vous devez définir un identifiant pour que vous puissiez entrer ici, appelez-le 'myInput':

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

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

 <form name="myform" id="myform" action="action.php"> <input type="hidden" name="myinput" id="myinput" value="0" /> <input type="text" name="message" id="message" value="" /> <input type="submit" name="submit" id="submit" onclick="DoSubmit()" /> </form> function DoSubmit(){ document.getElementById("myinput").value = '1'; return true; } 

Mon problème s'est avéré être que j'étais assigné comme document.getElementById("myinput").Value = '1';

Notez le capital V dans Valeur? Une fois que je l'ai changé en petit cas, c.-à-d. Valeur, les données ont commencé à publier. Assez étrange puisqu'il ne donnait pas non plus d'erreurs Javascript

Pouvez-vous utiliser on Exchange Event

 <form name="myform" id="myform" action="action.php"> <input type="hidden" name="myinput" value="0" onchange="this.form.submit()"/> <input type="text" name="message" value="" /> <input type="submit" name="submit" onclick="DoSubmit()" /> </form>