我在表单上有一个提交事件处理程序(以吸引人们使用enter提交表单,有时我需要通过dispatchEvent手动触发(由用户单击提交按钮以外的内容触发)。

希望它实际提交表单,但是一旦dispatchEvent被触发,看来我无法取消它?

myForm.addEventListener('submit', function(e) {
    e.preventDefault();
    console.log(e.defaultPrevented); // false
});

myForm.dispatchEvent(new Event('submit', {'detail': 'mydetail'}));

在Chrome中,它仍然会输出false,但表单不会提交(所需的行为)。实际上,即使我删除了preventDefault()行,它仍然没有提交?

但是,Firefox是另一回事,总是提交表单。

我该如何更改?

最佳答案

您必须使用可取消的属性将事件显式编码为TRUE,并且默认情况下不会处理该事件。

 myForm.dispatchEvent(new Event('submit', {'detail': 'mydetail', cancelable: true}))

关于javascript - 如何防止dispatchEvent上的Default()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40916300/

10-11 05:10