2012-08-03 96 views
2

我有一个JSP页面,它具有标准格式。我有两个按钮,每个按下时执行不同的动作,并提交表单 - 动作1和动作2.用两个提交按钮提交表单,每个执行不同的操作问题

我原本设置了一个按钮,所以它通过以下所有完成,并工作正常:

$('#form').submit(function() { .... } 

但现在我有两个按钮,我希望它做同样的事情,但如何找到我按下哪个按钮。

我可以通过.click函数做到这一点,但我不想打破我现有的form.submit功能。

下面是我的代码这一点 - 不工作:

$('#form').submit(function() { 

     // Set the field array variables with data 
     $('button[name="action1"], [name="action2"]').each(function(index) { 
      alert('index : ' + index); 
      alert('value : ' + this.value); 
     }); 

     $('button[name="action1"]').click(function(e) { 
      alert('ac1 clicked'); 
     }); 

     $('button[name="action2"]').click(function(e) { 
      alert('ac2 clicked'); 
     }); 

我的HTML按钮:

  <button id="submitButton" name="action1" value="action1" type="submit">action 1</button> 
      <button id="submitButton" name="action2" value="action2" type="submit">action 2</button> 

有没有一种方法,我可以做到这一点我form.submit内,或者做一个.click的方式,然后提交表单。对于这个问题的解决方案,我有点失落?

请帮助:)

+0

复制http://stackoverflow.com/questions/3577469/form-onsubmit-determine-which-submit-button-was -pressed – 2012-08-03 11:49:48

+0

我认为有一个类似于你的答案: http://stackoverflow.com/questions/547821/two-submit-buttons-in-one-form – LLAlive 2012-08-03 11:53:23

回答

0

在按钮的点击处理程序,提交表单前设置的隐藏字段。然后读取请求处理程序中隐藏字段的值,以找出请求的操作。

0

绑定一个事件处理程序的按钮

$('button').on('click', function(e) { 
    var buttonId = $(this).attr('name'); 
    if(buttonId = 'action1') { 
     // action1 was pressed 
    } else { 
     // action2 was pressed 
    } 

    $('#form').trigger('submit'); // trigger submit of form. 

    e.preventDefault(); 
}); 
+0

嗨@ninja这对我所需要的工作很好。唯一的问题是,我的form.submit有一个函数,即'$('#form')。submit(function(){...}'我如何使用触发器提交您的建议? – babb 2012-08-03 12:27:57

2

可以读取事件对象的相关目标。

$('#form').on('submit', function(evt) { 
    if (evt.relatedTarget && $(relEl).is('input[type=submit]')) { 
     /* related element is a button - do something */ 
    } 
    evt.preventDefault(); //cancel form submit, as required 
}); 
0

对于标准的HTML表单提交:

HTML:

<form method="..." action="..."> 
    ... 
    <input type="hidden" name="action"> 
    <input value="action1" type="submit" value="action 1" /> 
    <input value="action2" type="submit" value="action 2" /> 
    ... 
</form> 

的Javascript:

$('button[type="submit"]').on('click', function() { 
    $("#action").val(this.value);//where "#action" selects an input field (in the same form) of type="hidden" 
}); 

对于AJAX提交,做相同的,但读出的动作字段的值回提交处理程序中的JavaScript。

0

首先,在同一页面上从不包含具有相同标识的两个dom元素。 class属性是用于这样的事情。更改按钮submitButton1和submitButton2的id的分别,然后这应该工作:

$('#submitButton1').closest('#form').submit(function() { 
    // first button action 
}); 

$('#submitButton2').closest('#form').submit(function() { 
    // second button action 
});