我在网站上有以下表格
<% form_tag({ :action => :subid}, :id=>'run_report', :name => 'run_report') do %>
Beginning Date <%= date_select("post", "start_date", :start_year => 2010,:order => [:month, :day, :year]) %><br />
End Date <%= date_select("post", "end_date", :start_year => 2010,:order => [:month, :day, :year]) %><br />
<%= submit_tag 'Run', :name => "submit", :class => "submit_btn" %>
<% end %>
我想添加另一个名为Generate的按钮,该按钮与下面的表单一样传递相同的变量(start_date和end_date)但是调用action而不是run。理想情况下,我想这样做,而不必有两个重复的表格。
感谢任何帮助。
答案 0 :(得分:1)
或者您可以绑定按钮onclick动作类似
$("#your_button_id").click(function() {
$.post("second_url", $("#your_form_id").serialize());
return true;
});
答案 1 :(得分:0)
可以使用javascript。在视图中,您可以使用name
属性或html5数据属性,如下所示。主要的想法是,有必要将某个url存储到正确的表单操作中。
<% form_tag(:id=>'run_report', :name => 'run_report') do %>
<%= submit_tag 'Run', :name => "submit", :data-action => "#{url_for(action1)}", :class => "submit_btn" %>
<%= submit_tag 'Generate', :name => "generate", :data-action => "#{url_for(action2)}", :class => "submit_btn" %>
<% end %>
简单的JQuery脚本(应该可以工作但未经过测试):
var $form = $('#run_report);
$('#run_report :submit').click(function() {
$form.attr('action', $(this).attr('data-action')).addClass('ready').submit();
});
$form.submit(function(e){
if(!$form.hasClass('ready')) {
e.preventDefault();
});
诀窍是,虽然表单没有类ready
,但它不会被提交。然后在设置正确的表单操作后添加此类。
当我使用值初始化隐藏的表单字段时,这取决于单击的按钮但具有相同的表单操作。虽然您的案例中的方法可以是相同的。希望这个方向能帮助你。