Comment modifier l'attribut d'action d'un formulaire juste après avoir cliqué sur le bouton Soumettre?
Attachez-vous à l'événement de bouton de soumission click
et modifiez l'attribut action
dans le gestionnaire d'événements.
<input type='submit' value='Submit' onclick='this.form.action="somethingelse";' />
Ou vous pouvez le modifier depuis l'extérieur du formulaire, avec javascript de manière normale:
document.getElementById('form_id').action = 'somethingelse';
Il existe un moyen simple de le faire si vous ne devez prendre en charge que les navigateurs modernes: sur votre bouton d'envoi, ajoutez un formaction="/alternate/submit/url"
attribut comme ceci:
<form>
[fields]
<input type="submit" value="Submit to a" formaction="/submit/a">
<input type="submit" value="submit to b" formaction="/submit/b">
</form>
Il fonctionne également sur <button>
Mots clés.
Le problème est que les anciennes versions de IE (<10) et Android Browser (<4.0) ne le prennent pas en charge. Donc, si vous avez besoin de prendre en charge anciens navigateurs, les réponses JS existantes fonctionneront probablement mieux pour vous.
Plus d'informations: http://www.wufoo.com/html5/attributes/13-formaction.html
Vous pouvez également définir la valeur de l'attribut onSubmit
dans la balise de formulaire. Vous pouvez définir sa valeur à l'aide de Javascript.
Quelque chose comme ça:
<form id="whatever" name="whatever" onSubmit="return xyz();">
Here is your entire form
<input type="submit">
</form>;
<script type=text/javascript>
function xyz() {
document.getElementById('whatever').action = 'whatever you want'
}
</script>
N'oubliez pas que onSubmit
a une priorité plus élevée que l'attribut action. Ainsi, chaque fois que vous spécifiez la valeur onSubmit
, cette opération sera effectuée en premier, puis le formulaire passera à l'action.
Vous pouvez le faire côté javascript.
<input type="submit" value="Send It!" onClick="return ActionDeterminator();">
Lorsque vous cliquez dessus, la fonction JavaScript ActionDeterminator () détermine l'URL de l'action alternative. Exemple de code.
function ActionDeterminator() {
if(document.myform.reason[0].checked == true) {
document.myform.action = 'http://google.com';
}
if(document.myform.reason[1].checked == true) {
document.myform.action = 'http://Microsoft.com';
document.myform.method = 'get';
}
if(document.myform.reason[2].checked == true) {
document.myform.action = 'http://yahoo.com';
}
return true;
}
La mise en forme HTML5 ne fonctionne pas sur les anciens navigateurs IE. Une solution simple, basée sur certaines des réponses ci-dessus, est :
<button onclick="this.form.action='/PropertiesList';"
Account Details </button>