Jquery per modificare l'azione del modulo


118

Ho due pulsanti in un modulo e due pagine diverse devono essere richiamate quando vengono cliccate. quando si fa clic sul pulsante1, è necessario caricare la pagina1 e quando si fa clic sul pulsante2 è necessario caricare la pagina2. So come farlo in javascript ma non ho idea di come farlo in jquery. Qualcuno può aiutarmi?

Risposte:


181

Prova questo:

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


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

28

jQuery è solo JavaScript, non pensarci in modo molto diverso! Come faresti in JS "normale", aggiungi un listener di eventi ai pulsanti e modifichi l'attributo di azione del modulo. In jQuery questo assomiglia a:

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

Questo codice è lo stesso per il secondo pulsante, devi solo cambiare l'id del tuo pulsante e l'URI a cui deve essere inviato il modulo.


20

Usa jQuery.attr()nel gestore dei clic:

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

14

Per motivi di varietà:

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

14

Per favore, guarda questa risposta: https://stackoverflow.com/a/3863869/2096619

Citando Tamlyn :

jQuery (1.4.2) viene confuso se si hanno elementi del form denominati "action". È possibile aggirare questo problema utilizzando i metodi degli attributi DOM o semplicemente evitando di avere elementi del modulo denominati "azione".

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

8
$('#button1').click(function(){
$('#myform').prop('action', 'page1.php');
});

0

Per modificare dinamicamente il valore dell'azione del modulo, puoi provare il codice seguente:

sotto il codice è se stai aprendo una scatola dailog e all'interno di quella scatola dailog hai il modulo e vuoi cambiarne l'azione. Ho usato la casella dailog Bootstrap e all'apertura di quella casella dailog assegno il valore dell'azione al modulo.

$('#your-dailog-id').on('show.bs.modal', function (event) {
    var link = $(event.relatedTarget);// Link that triggered the modal
    var cURL= link.data('url');// Extract info from data-* attributes
    $("#delUserform").attr("action", cURL);
});

Se stai tentando di modificare l'azione del modulo sulla pagina normale, utilizza il codice seguente

$("#yourElementId").change(function() { 
  var action = <generate_action>;
  $("#formId").attr("action", action);
});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.