我有一个表单中的动作链接需要每分钟更新一个令牌.当用户点击提交按钮时,我从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();
问题是,使用js / jQuery,当它提交它在一个新的窗口打开没有典型的菜单和按钮在浏览器,它是一个弹出窗口的大小.
没有jQuery,如果我只是点击按钮,它将在一个新的选项卡中打开.
如何用jQuery完成这个?
解决方法
而不是抓住点击事件,尝试捕获表单的提交事件,以防万一发现任何错误,您可以使用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>
这是什么,如果你输入“poop”它不提交表单,其他任何东西它提交表单到新的选项卡.希望这可以帮助 :)
更新:
关于你的评论,如果发生错误,你想打开一些其他选项卡,然后用$(this).attr({“action”:“http://www.someothersite.com”})替换e.preventDefault() ; .希望这可以帮助 :)
更新:
如果您想要异步打开选项卡,那么您将遇到困难,这是最接近的.
HTML部分
<form id="someForm" action="about:blank" target="newStuff" /> <input type="submit" value="12345" id="someid" />
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! } } }); }); });