Jquery para cambiar la forma de acción

117

Tengo dos botones en un formulario y hay que llamar a dos páginas diferentes cuando se hace clic en ellas. cuando se hace clic en el botón1, se debe cargar la página1 y cuando se hace clic en el botón2, se debe cargar la página2. Sé cómo hacer esto en javascript pero no tengo ni idea de cómo hacerlo en jquery. ¿Alguien puede ayudarme?

nikhil
fuente

Respuestas:

181

Prueba esto:

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


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

jQuery es solo JavaScript, ¡no pienses de manera muy diferente al respecto! Como haría en JS 'normal', agrega un detector de eventos a los botones y cambia el atributo de acción del formulario. En jQuery, esto se parece a:

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

Este código es el mismo para el segundo botón, solo necesita cambiar la identificación de su botón y el URI donde se debe enviar el formulario.

Edwin V.
fuente
19

Use jQuery.attr()en su controlador de clic:

$("#myform").attr('action', 'page1.php');
Jesse Bunch
fuente
14

Por el bien de la variedad:

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

Por favor, vea esta respuesta: https://stackoverflow.com/a/3863869/2096619

Citando a Tamlyn :

jQuery (1.4.2) se confunde si tiene algún elemento de formulario llamado "acción". Puede evitar esto utilizando los métodos de atributo DOM o simplemente evitar tener elementos de formulario denominados "acción".

<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>
Fernando Vieira
fuente
8
$('#button1').click(function(){
$('#myform').prop('action', 'page1.php');
});
João Mello
fuente
0

Para cambiar el valor de la acción del formulario de forma dinámica, puede probar el siguiente código:

El siguiente código es si está abriendo algún cuadro de diálogo y dentro de ese cuadro de diálogo tiene un formulario y desea cambiar la acción del mismo. Utilicé el cuadro de diálogo de Bootstrap y al abrir ese cuadro de diálogo estoy asignando un valor de acción al formulario.

$('#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);
});

Si está intentando cambiar la acción del formulario en una página normal, utilice el siguiente código

$("#yourElementId").change(function() { 
  var action = <generate_action>;
  $("#formId").attr("action", action);
});
Gampesh
fuente