我在表单上有一个提交事件处理程序(以吸引人们使用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/