Je travaille actuellement sur un formulaire de base. Ce que je veux faire avec ce formulaire, c’est que, lorsque vous cliquez sur le bouton Envoyer/sur le bouton, vous modifiez d’abord la valeur d’un champ, puis vous le soumettez normalement. Tout ça ressemble un peu à ça:
<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 voici à quel point je suis venu avec le JavaScript. Il change la valeur de "myinput" en 1 mais ne soumet pas le formulaire. Je suis vraiment un noobie JavaScript, alors pardonnez-moi si cette question est trop simple, mais je ne comprends pas vraiment ce que je veux dire.
function DoSubmit(){
document.myform.myinput.value = '1';
document.getElementById("myform").submit();
}
Vous pouvez 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>
Et puis modifiez votre fonction DoSubmit pour qu'elle retourne juste true, en indiquant que "c'est OK, vous pouvez maintenant envoyer le formulaire" au navigateur:
function DoSubmit(){
document.myform.myinput.value = '1';
return true;
}
EDIT: Je serais également prudent d’utiliser 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, par exemple, en appuyant sur return 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 ça devrait marcher:
<form name="myform" id="myform" action="action.php">
Non. Lorsque votre type d'entrée est soumis, vous devez déclarer un événement onsubmit
dans la balise, puis effectuer les modifications souhaitées. Cela signifie que vous avez un onsubmit
défini dans votre balise de formulaire.
Sinon, remplacez le type d'entrée par un bouton, puis définissez un événement onclick
pour ce bouton.
voici un code simple, vous devez définir un identifiant pour votre entrée 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 name
qui fonctionne pour les publications sur le serveur mais javascript répond à l'attribut id
. Ajoutez un id
avec la même valeur que name
et tout devrait bien fonctionner.
<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é que j'attribuais comme document.getElementById("myinput").Value = '1';
Remarquez le capital V en valeur? Une fois que je le change en petit cas, par exemple; valeur, les données ont commencé à publier. Odd car cela ne donnait pas non plus d'erreur Javascript
Pouvez-vous utiliser onchange 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>
Cela pourrait vous aider.
Votre HTML
<form id="myform" action="action.php">
<input type="hidden" name="myinput" value="0" />
<input type="text" name="message" value="" />
<input type="submit" name="submit" onclick="save()" />
</form>
VOTRE SCRIPT
<script>
function save(){
$('#myinput').val('1');
$('#form').submit();
}
</script>