jquery改变表单动作
我有一个窗体中的两个button,当点击它们时,必须调用两个不同的页面。 当button1被点击时,page1必须被加载,而当button2被点击时,page2必须被加载。 我知道如何在JavaScript中做到这一点,但我不知道如何在jQuery中做到这一点。任何一个可以帮助我吗?
尝试这个:
$('#button1').click(function(){ $('#formId').attr('action', 'page1'); }); $('#button2').click(function(){ $('#formId').attr('action', 'page2'); });
jQuery只是JavaScript,不要想太多不同! 就像你在'普通'JS中所做的那样,你将一个事件监听器添加到button中,并改变表单的action属性。 在jQuery中,这看起来像这样:
$('#button1').click(function(){ $('#your_form').attr('action', 'http://uri-for-button1.com'); });
这个代码对于第二个button是一样的,你只需要改变你的button的id和表单应该被提交到的URI。
为了品种的缘故:
var actions = {input1: "action1.php", input2: "action2.php"}; $("#input1, #input2").click(function() { $(this).closest("form").attr("action", actions[this.id]); });
$('#button1').click(function(){ $('#myform').prop('action', 'page1.php'); });
在你的点击处理程序中使用jQuery.attr()
:
$("#myform").attr('action', 'page1.php');
请参阅此答案: 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>
要dynamic更改表单的动作值,可以尝试下面的代码:
下面的代码是,如果你打开一些dailog框,并在你有forms的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); });