仅为一个表单提交操作设置目标_blank

ipd*_*ipd 9 html javascript jquery ruby-on-rails-3 simple-form

我正在向我的rails应用程序提交一个表单,其中有两个提交按钮.它们都转到相同的控制器操作,并使用相同的表单,但在一个提交操作上,我想创建表单,target=_blank以便在新窗口中打开表单提交结果.

是否有捷径可寻?

这样做适用于这两个动作:

<%= simple_form_for @thingy, :target => '_blank' do |f| %>
Run Code Online (Sandbox Code Playgroud)

我已经习惯使用jQuery在表单上设置目标onclick,但没有运气.

Dav*_*ing 10

在其中一个按钮上添加一个类说popup.然后像这样添加一些jQuery:

$('.popup').click(function(e) {
    e.preventDefault(); //prevents the default submit action
    $(this).closest('form').attr('target', '_blank').submit();
});
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/HxrzD/

请注意,还有其他方法可以提交您可能需要考虑的表单,例如enter密钥.如果用户返回父窗口并使用其他按钮再次提交,您可能还需要重置窗体的目标属性.在这种情况下,您可以在结束时清除目标:

$(this).closest('form').attr('target', '_blank').submit().removeAttr('target');
Run Code Online (Sandbox Code Playgroud)

或保存以前的状态:

var $form = $(this).closest('form'),
    target = $form.attr('target');
$form.attr('target', '_blank').submit().attr('target', target);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/HxrzD/2/