【发布时间】:2014-08-27 17:23:30
【问题描述】:
仅在 chrome 上...
<form action="http://example.com" method="get" target="_blank">
<input type="text" name="somename" value="some val">
<input type="submit">
</form>
从控制台执行这个js,超时函数或其他...
document.forms[0].submit();
如果通过实际点击“提交”按钮触发提交,表单将正常工作,但如果通过javascript触发提交,则会打开弹出窗口。
我需要完全一样的表单(方法获取,目标空白)并且必须通过 javascript 触发提交,因为在提交之前需要完成几个 ajax 请求...
有人知道解决方法吗?
为:邓肯·考恩
$('button').on('click', function(){
// Validation
// foo
// bar
// ...
// var errors = true;
window.promises = new Array;
// do ajax calls and add hidden inputs...
window.promises.push($.ajax({ /* Call ...*/ }));
window.promises.push($.ajax({ /* Call ...*/ }));
window.promises.push($.ajax({ /* Call ...*/ }));
// not always the case
var promis = true;
// once inputs are placed... submit
if (promis) {
$.when.apply($, window.promises).done(function() {
// Do submit
$('form').trigger('submit');
});
}
// errors or promises cancel submit
if ( errors || promis ) {
return false;
}
});
【问题讨论】:
-
这个好像是a duplicate of this question,讨论的很详细。
-
你能创建 plunker 来重现问题吗?
-
@AlexP 对不起,这对我没有帮助。但那也行。
-
@MichałLach 这样做:plnkr.co/edit/M4gzX0wRi9o08LsESsUS?p=preview
标签: javascript forms google-chrome