web-dev-qa-db-fra.com

Définir l'attribut d'action d'un formulaire lors de la soumission?

Comment modifier l'attribut d'action d'un formulaire juste après avoir cliqué sur le bouton Soumettre?

31
dave

Attachez-vous à l'événement de bouton de soumission click et modifiez l'attribut action dans le gestionnaire d'événements.

15
Oded
<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';
47
James

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

26
Nathan Friedly

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.

17
Bhavik Shah

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;
}
3
Priyank

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>
1
user2099484