147 votes

Jquery pour modifier l'action du formulaire

J'ai deux boutons dans un formulaire et deux pages différentes doivent être appelées quand ils sont cliqués. quand button1 est cliqué alors page1 doit être chargé et quand button2 est cliqué alors page2 doit être chargé. je sais comment faire cela dans javascript mais je n'ai aucune idée sur la façon de faire cela dans jquery.Quelqu 'un peut-il m'aider ?

218voto

EmCo Points 1355

Essayez ceci :

$('#button1').click(function(){
   $('#formId').attr('action', 'page1');
});


$('#button2').click(function(){
   $('#formId').attr('action', 'page2');
});

32voto

Edwin V. Points 777

jQuery est juste JavaScript, n'y pense pas très différemment ! Comme vous le feriez dans JS 'normal', vous ajoutez un écouteur d'événement aux boutons et modifiez l'attribut d'action du formulaire. Dans jQuery, cela ressemble

$('#button1').click(function(){
   $('#your_form').attr('action', 'http://uri-for-button1.com');
});

Ce code est le même pour le deuxième bouton, il vous suffit de changer l'ID de votre bouton et l'URI où le formulaire doit être soumis.

25voto

Jesse Bunch Points 4251

Utilisez jQuery.attr() dans votre gestionnaire de clics :

$("#myform").attr('action', 'page1.php');

20voto

Fernando Vieira Points 633

Veuillez consulter cette réponse : https://stackoverflow.com/a/3863869/2096619

Citant Tamlyn :

jQuery (1.4.2) est confus si vous avez des éléments de formulaire nommés "action". Vous pouvez contourner cela en utilisant les méthodes d'attribut DOM ou simplement éviter d'avoir des éléments de formulaire nommés "action".

<form action="foo">
  <button name="action" value="bar">Go</button>
</form>

<script type="text/javascript">
  $('form').attr('action', 'baz'); //this fails silently
  $('form').get(0).setAttribute('action', 'baz'); //this works
</script>

14voto

karim79 Points 178055

Pour la variété :

var actions = {input1: "action1.php", input2: "action2.php"};
$("#input1, #input2").click(function() {
    $(this).closest("form").attr("action", actions[this.id]);
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X