jQuery将表单提交到新标签?

我有一个表单中的操作链接,需要每分钟更新一次令牌。 当用户点击提交按钮时,我从api调用中获取新的url / token。 我正在使用这样的东西

问题是,在提交它时使用js / jQuery会在新窗口中打开而没有浏览器中的典型菜单和按钮,而且它是弹出窗口的大小。

没有jQuery,如果我只是点击按钮,它将在新选项卡中打开。

我怎样才能用jQuery实现这个目标?

尝试捕获表单的submit事件而不是捕获click事件,如果发现任何错误,可以使用event.preventDefault();
更新在这里我测试了这个代码,它工作正常,

             $('#somelink').on('submit',function(e) { if($('#lol').val() == "poop"){ //Sample error check e.preventDefault(); alert($('#lol').val()); } });    

这样做的是,如果你输入“poop”它不会提交表单,因为它提交表单到新标签的任何其他内容。 希望这可以帮助 :)
更新:
关于你的评论,如果出现错误你想打开其他一些标签,那么用$(this).attr({"action":"http://www.someothersite.com"});替换e.preventDefault()e.preventDefault() $(this).attr({"action":"http://www.someothersite.com"}); 。 希望这可以帮助 :)
更新:
如果你想异步打开一个标签,那么你会很难,这是它可以得到的最接近的。
HTML部分

 

Javascript部分

 $(document).ready(function() { $('#someForm').submit(function(e) { $.ajax({ url: 'http://search.twitter.com/search.json?', dataType: 'jsonp', success: function(data) { if (data != "") { var link = "http://www.google.com/"; window.open(link,'newStuff'); //open's link in newly opened tab! } } }); }); }); 

我有同样的问题,这是我如何解决它:

 

这会将表单提交到新选项卡(_blank),而不使用本机提交按钮。

 jQuery("#availability_players_form").attr("target","_blank"); jQuery("#availability_players_form").submit(); 

其中#availability_players_form = form id

你可以使用target="_newtab"

 content of the anchor 

默认情况下,窗体提交到同一窗口,除非窗体位于模态/无模式窗口对话框内。如果窗体确实位于模态/无模式对话框中,则需要使用窗体目标设置窗口名称。

    

并将表单目标更改为

   

看看是否有帮助:)

您已经将目标定义为"_blank"因此请尝试下面的代码并查看示例链接,而不是您将看到它是如何工作的…并尝试$.post而不提交,或者您可以使用ajax将数据保存在后台某处并发送给它到新标签..

 $(document).ready(function() { $('#YourForm').submit(function() { // <---- Your form submit event $(this).target = "_blank"; // <---- to new tab $.post(url, function(data) { // whatever you wanna post do it here }); window.open($(this).prop('action')); // <---- form action attribute = url return false; // <---- prevents submit }); });​ 

或使用ajax

 $(document).ready(function() { $('#YourForm').submit(function() { // <---- Your form submit event $(this).target = "_blank"; // <---- to new tab var json = $.toJSON({ yourjsondata1: data1, yourjsondata2: data2 }); $.ajax({ url: "/some/url", type: "POST", dataType: "json", data: json, contentType: "application/json; charset=utf-8", success: function (data) { window.open($(this).prop('action')); // <---- form action attribute = url } }); return false; // <---- prevents submit }); });​ 

看这个例子:

http://jquerybyexample.blogspot.com/2012/05/open-link-in-new-tab-or-new-popup.html

编辑:

  $(document).ready(function() { $('#someid').click(function() { // lets say you got ur data from your post method var url = '/api?id=' + $('#someid').val(); $.post(url, function(data) { if (data != '') { // update your link $('#somelink').attr('action', data); // update target to new tab $("#somelink").target = '_blank'; // than go window.open($("#somelink").attr('action')); return false; } else { } }); }); }); 

小提琴: http : //jsfiddle.net/BerkerYuceer/nfTWL/

这个简单的东西对你有用,不需要Jake Weary – 只需要vanilla JavaScript:

 Print 

这对我很好。 我试过这个。 它可能会帮助你。 根据您的要求进行一些更改,它会起作用。