Modifier la valeur d'entrée puis soumettre le formulaire en JavaScript

je travaille actuellement sur un formulaire de base. Ce que je veux faire avec ce formulaire est que lorsque vous appuyez sur soumettre/bouton pour changer d'abord la valeur d'un champ et ensuite 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 voilà où j'en suis avec le JavaScript. Il change la valeur de"myinput" à 1 mais ne soumet pas le formulaire. Je suis vraiment un Noobie JavaScript donc pardonnez-moi si c'est juste une question trop simple mais je ne suis pas obtenir le coup de lui vraiment.

function DoSubmit(){
  document.myform.myinput.value = '1';
  document.getElementById("myform").submit();
}
39
demandé sur Brett DeWoody 2011-08-02 16:39:18

7 réponses

Vous pourriez faire quelque chose comme ceci à 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>

puis modifiez votre fonction DoSubmit pour juste retourner true, en indiquant que "c'est OK, maintenant vous pouvez soumettre le formulaire" au navigateur:

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

EDIT: je me méfierais aussi d'utiliser onclick events sur un bouton submit; l'ordre des événements n'est pas immédiatement évident, et votre callback ne sera pas appelé si l'utilisateur soumet, par exemple, en appuyant sur le retour dans une boîte de texte.

46
répondu valderman 2011-08-02 12:44:19
document.getElementById("myform").submit();

cela ne fonctionnera pas car votre étiquette de formulaire n'a pas d'id.

Modifier comme ceci et cela devrait fonctionner:

<form name="myform" id="myform" action="action.php">
5
répondu Claude Schlesser 2011-08-02 12:42:19

voici le code simple, vous devez définir un id pour vous entrez ici appelez-le 'myInput':

      var myform = document.getElementById('myform');
      myform.onsubmit = function(){ 
                    document.getElementById('myInput').value = '1';
                    myform.submit();
                  };
5
répondu Said Marar 2013-05-27 19:40:01

Non. Lorsque votre type d'entrée est submit, vous devriez avoir un onsubmit événement déclaré dans le balisage et ensuite faire les changements que vous voulez. Sens, avoir un onsubmit défini dans votre balise de formulaire.

sinon, changez le type d'entrée en un bouton et définissez un onclick événement pour ce bouton.

5
répondu Ashwin Krishnamurthy 2015-06-09 17:01:22

Vous essayez d'accéder à un élément basé sur le name attribut qui fonctionne pour les postbacks au serveur mais javascript répond au id l'attribut. Ajouter un id avec la même valeur que 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;
}
2
répondu Chris Snowden 2011-08-02 12:50:02

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

Vous remarquez le capital V en valeur? Une fois que je l'ai changé en petit cas ie; valeur, les données ont commencé à afficher. Impair car il ne donnait pas D'erreurs Javascript aussi bien

1
répondu Dinesh Rajan 2014-03-29 23:55:58

pouvez-vous utiliser onchange Événement

<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>
0
répondu iCrazybest 2015-03-06 03:30:58