我有一个表单中的操作链接,需要每分钟更新一次令牌.当用户点击提交按钮时,我从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