通过javascript提交时未捕获提交事件

通过javascript提交时未捕获提交事件,javascript,Javascript,我遇到的问题是,如果表单是通过Javascript提交的,我不知道为什么提交事件不能被捕获 代码: 试验 document.getElementById(“formA”).addEventListener(“提交”,函数(){ console.log(“表单已提交”);//如果由js提交则无效。为什么? }); document.getElementById(“btn”).addEventListener(“单击”,函数)(){ document.getElementById(“formA”)

我遇到的问题是,如果表单是通过Javascript提交的,我不知道为什么提交事件不能被捕获

代码:


试验
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"); 
});