jQuery将表单提交到新标签?

arc*_*ect 22 jquery

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

 <form id="somelink" action="http://some.external.url/" target="_blank" />

 $('#somebutton').click(function(e) {
      e.preventDefault();
      var url = '/apicall?id=' + $('#someid').val();                  
      $.post(url, function(data) {
           $('#somelink').attr('action', data);
           $('#somelink').submit();
Run Code Online (Sandbox Code Playgroud)

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

没有jQuery,如果我只是点击按钮,它将在新标签页中打开.

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

pps*_*ith 21

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

<!doctype html />
<html>
  <head>        
    <title></title>
    <script type="text/javascript" src="jquery.js"/></script>
</head>
<body>
  <form action='http://someSite.com' id='somelink' target='_blank'>
    <input type='text' name='lol' id='lol'/>
    <input type='submit'/>
  </form>
  <script type="text/javascript"/>
      $('#somelink').on('submit',function(e) {
          if($('#lol').val() == "poop"){ //Sample error check
              e.preventDefault();
              alert($('#lol').val());
          }
      });
  </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

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

<form id="someForm" action="about:blank" target="newStuff" />
<input type="submit" value="12345" id="someid" />
Run Code Online (Sandbox Code Playgroud)

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!
            }
        }
    });
 });
 });
Run Code Online (Sandbox Code Playgroud)


Bra*_*ley 14

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

<form action="..." method="POST" target="_blank">
<input type="submit" id="btn-form-submit"/>
</form>
<script>
    $('#btn-submit').click( function(){ $('#btn-form-submit').click(); } );
</script>
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

jQuery("#availability_players_form").submit();
Run Code Online (Sandbox Code Playgroud)

哪里 #availability_players_form = form id