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();
}
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.
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">
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();
};
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.
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;
}
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
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>