return false;event.preventDefault 不适用于 1password 自动提交

return false;event.preventDefault not work for 1password auto-submit

我的网站只有ajax登录提交方式,所以当表单直接提交时,它会return一个json数据并刷新page.so我想观察提交事件并将其运行到 ajax 方式,但我无法阻止自动提交,我尝试了很多方法来阻止 1password 自动提交提交,但失败了,所以我尝试获取一些帮帮忙,非常感谢!

javascript

$('form').submit(function(e) {
    e.preventDefault();
    return false;
});

1密码扩展自动提交代码

var a = document.forms[0];
var b = document.createEvent('UIEvent');
b.initEvent('submit', !0, !0, window, 1);
a.dispatchEvent(b);
a.submit();
return !0;

环境

Mac 专业版 chrome、safari、firefox

问题

这是我的第一个问题,如果我有任何错误,请告诉我!如果有任何帮助,我将不胜感激!

添加解决方案

您可以使用 event.defaultPrevented

检查在调用提交之前是否阻止了默认设置
var a = document.forms[0];
var b = document.createEvent('UIEvent');
b.initEvent('submit', !0, !0, window, 1);
a.dispatchEvent(b);
if (!b.defaultPrevented) {
    a.submit();
}
return !0;

在您的情况下,您正在调度一个事件,但这与实际的提交调用无关,以编程方式调用提交也不会触发提交事件。所以你可以做的是通过检查 defaultPrevented 属性来检查默认操作是否被阻止,如上所示。

演示:Fiddle