window.open无法处理表单
window.open not working with form
单击form
提交时,我正试图打开一个新页面。当<form></form>
标记不存在时,此代码运行良好。为什么?我如何使它也与表单标签一起工作?
HTML
<form name="input">
<input id="Answer" name="Answer" value="" placeholder="something"/>
...
<input id="Answer" name="Answer" value="" placeholder="something"/>
<input type="submit" value="Submit" onclick="reload(this)"/>
</form>
JS-
function reload(e) {
e.preventDefault();
// do somthing with inputs
window.open('new_page.html', '_self');
// window.location.href = 'new_page.html';
}
我尝试了window.open('new_page.html', '_self');
、window.location.href = 'new_page.html';
和e.form.preventDefault;
jsFiddle
简单的答案是,您不是在向函数传递event
,而是在传递HTMLInputElement
(带有this
变量),如果您改为传递event
(并假设已更正HTML),则使用:
<form name="input">
<input id="Answer" name="Answer" value="" placeholder="something"/>
<input id="Answer" name="Answer" value="" placeholder="something"/>
<input id="Answer" name="Answer" value="" placeholder="something"/>
<input type="submit" value="Submit" onclick="reload(event)" />
</form>
和:
function reload(e) {
console.log(e);
e.preventDefault();
// do somthing with inputs
window.open('http://example.com/', '_self');
}
JS Fiddle演示
然后它就像你所期望的那样工作。
然而,就我个人而言,我不喜欢使用内联事件处理,而是使用不引人注目的JavaScript:
<form name="input" method="post" action="#">
<input id="Answer" name="Answer" value="" placeholder="something" />
<input id="Answer" name="Answer" value="" placeholder="something" />
<input id="Answer" name="Answer" value="" placeholder="something" />
<input type="submit" value="Submit" />
</form>
带有:
function reload (e){
e.preventDefault();
var win = window.open('http://example.com/', '_self');
}
var form = document.getElementsByName('input')[0];
form.addEventListener('submit', reload);
JS Fiddle演示。
相关文章:
- Javascript无法处理表单提交
- 用于处理表单的Handlerbars模板
- jQuery无法在InfoWindow中处理表单
- php会话不会;单击“提交”按钮时无法处理表单
- 使用 JS 和 JQuery 处理表单输入
- 使用 javascript 处理表单并在弹出窗口中使用它
- 使用 jQuery 处理表单
- 调用 Javascript 函数处理表单后,HTML 表单未打印到浏览器
- 处理表单时显示图像时出错
- 使用第二个按钮处理表单数据PHP_SELF将表单数据发布到另一个页面
- 使用 d3 而不是 jQuery 来处理表单输入会导致重新加载“/”
- 用Javascript处理表单提交事件,避免“;Form Processed”;
- jQuery屏蔽输入插件无法处理表单输入
- 在不重定向或使用过多JavaScript的情况下处理表单上的必需字段
- window.open无法处理表单
- Symfony 2:如何处理表单中的嵌套集合
- 处理表单时禁用“提交”按钮
- 提交并确认始终处理表单
- 用Javascript中的多个提交按钮处理表单提交
- 用javascript异步预处理表单数据