jQuery更改表单操作

157

我有一个表单里面有两个按钮,当它们被点击时必须调用两个不同的页面。当点击button1时,页面1必须加载,而当点击button2时,页面2必须加载。我知道如何使用javascript实现这一点,但我不知道如何在jquery中实现。有人可以帮我吗?

7个回答

233

试试这个:

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


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

35

jQuery只是JavaScript,不要将它看作完全不同的东西!就像在“普通”的JS中一样,你可以给按钮添加事件监听器并更改表单的操作属性。在jQuery中,这看起来应该像这样:

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

这段代码对于第二个按钮来说是一样的,你只需要改变按钮的id和表单应该被提交到的URI。


28

在您的单击处理程序中使用jQuery.attr()

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

22
请看这个答案:https://dev59.com/y-o6XIcBkEYKwwoYTzJK#3863869 引用 Tamlyn 的话:
jQuery(1.4.2)如果你有任何名为“ action”的表单元素,它会感到困惑。您可以通过使用DOM属性方法或简单地避免使用名称为“ 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>

14

为了多样性的缘故:

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

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

2

要动态更改表单的操作值,您可以尝试以下代码:

如果您正在打开某个对话框,并且在该对话框中有一个表单并且您想更改它的操作,则可以使用下面的代码。我使用了Bootstrap对话框,在打开该对话框时,我将操作值分配给表单。

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

如果您正在尝试更改常规页面上的表单操作,请使用以下代码。
$("#yourElementId").change(function() { 
  var action = <generate_action>;
  $("#formId").attr("action", action);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接