通过javascript提交时未捕获提交事件
我遇到的问题是,如果表单是通过Javascript提交的,我不知道为什么提交事件不能被捕获 代码:通过javascript提交时未捕获提交事件,javascript,Javascript,我遇到的问题是,如果表单是通过Javascript提交的,我不知道为什么提交事件不能被捕获 代码: 试验 document.getElementById(“formA”).addEventListener(“提交”,函数(){ console.log(“表单已提交”);//如果由js提交则无效。为什么? }); document.getElementById(“btn”).addEventListener(“单击”,函数)(){ document.getElementById(“formA”)
试验
document.getElementById(“formA”).addEventListener(“提交”,函数(){
console.log(“表单已提交”);//如果由js提交则无效。为什么?
});
document.getElementById(“btn”).addEventListener(“单击”,函数)(){
document.getElementById(“formA”).submit();
});
您可以应用技巧在按钮单击时捕获提交事件,当按钮客户端可以在提交
时添加单击事件,其工作原理与您想要实现的相同
document.getElementById(“formA”).addEventListener(“提交”,函数(){
警告(“表单已提交”);//如果由js提交则无效。为什么?
});
document.getElementById(“btn”).addEventListener(“单击”,函数)(){
document.getElementById(“btn2”)。单击();
});代码>
我相信这是正确的答案:
这是表单的预期行为:
submit方法不调用onsubmit事件处理程序
参考:
换句话说,以编程方式提交表单时,不会触发onsubmit事件。它仅在单击提交按钮时触发。这就是我在测试OP的代码时观察到的
OP还向控制台输出一条消息,以测试表单是否已提交。但是,需要启用控制台持久性才能看到此消息。如果未启用,则提交表单时控制台日志将被清除(显示未打印任何消息)
如何检查代码不工作,您是否尝试返回false代码>在submit
回调函数的底部。谢谢。我试过了。这行不通,谢谢。根据提供的关键字,我发现是这样的。
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<form id="formA">
<input type="text" id="name" value="test"/>
<input type="button" id="btn" value="submit by js"/>
<input type="submit" id="btn2" value="submit directly"/> <!-- event can be triggered -->
</form>
</body>
<script type="text/javascript">
document.getElementById("formA").addEventListener("submit", function() {
console.log("form is submitted"); // no effect if submitting by js. WHY?
});
document.getElementById("btn").addEventListener("click", function() {
document.getElementById("formA").submit();
});
</script>
</html>
document.getElementById("formA").addEventListener("submit", function() {
console.log("form is submitted");
});