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?

Respuestas:


181

Prueba esto:

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


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

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.


19

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

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

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]);
});

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>

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

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);
});
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.