我怎么知道是什么导致了表单提交?

How do I know what caused a form submission?

<form name="myForm" id="a" action="/action_page.php"  method="post">
  Name: <input type="email" name="fname">
  

</form>
<button type="submit" form="a"  >submits</button>
<script>
const form=document.querySelector('form');

form.addEventListener('submit',function(e){
    e.preventDefault();
    console.log('a',e.currentTarget);
  console.log(e.target);  
},true);
</script>

e.target 是 'form' 本身点击 按钮 而根据我的理解应该是按钮。

我检查了其他事件,如无效和点击,它工作得很好。 是因为某些提交者吗?

您没有收听 buttonclick 事件,您正在收听 formsubmit 事件,这就是为什么您会看到form 作为 targetEvent

提交事件不一定在提交按钮点击时触发,它也可以通过在表单输入字段中按下 来触发(但不是在程序提交上:参见HTMLFormElement.submit())

幸运的是,导致表单提交的原因在 SubmitEvent.submitter 属性:

document.querySelector('form').addEventListener('submit', e => {
    console.log(e.submitter);
    e.preventDefault();
});
<form>
    <input placeholder="Type Enter here!">
    <button>Submit</button>
    <button>Just another submit button</button>
</form>