2011-03-27 66 views
71

我有一个窗体中的两个按钮,两个不同的页面被点击时必须被调用。当button1被点击时,page1必须被加载,当button2被点击时,page2必须被加载。我知道如何在JavaScript中做到这一点,但我不知道如何在jQuery中做到这一点。任何人都可以帮助我吗?jquery更改表单动作

回答

5

使用jQuery.attr()在点击处理程序:

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

jQuery是刚刚的JavaScript,不要以为很不同吧!就像您在'普通'JS中所做的一样,您可以向按钮添加事件侦听器并更改表单的操作属性。在jQuery的这看起来是这样的:

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

此代码是第二个按钮一样,你只需要更改按钮的ID,并在表格应提交的URI。

117

试试这个:

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


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

感谢.......... – 2017-11-11 12:24:13

9

对于品种的缘故:

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

请看到这个答案:https://stackoverflow.com/a/3863869/2096619

报价Tamlyn

如果您有任何名为“action”的表单元素,jQuery(1.4.2)会感到困惑。你可以通过使用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> 
0

动态改变形式的行动值,你可以试试下面的代码:

下面的代码是,如果你打开某些dailog箱和dailog盒子里面你有表格,你想改变它的行动。我使用了Bootstrap dailog框,并在打开该dailog框时将动作值分配给表单。

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