防止表单提交导致调试时重定向

Dou*_*Fir 3 javascript google-chrome google-chrome-devtools

我不确定要在这里添加哪些标签。

我正在向 JavaScript 中的 formSubmit 事件添加一些跟踪。我想通过在浏览器中多次提交表单来进行实验,并想知道 Chrome 中是否有某些设置或我可以在控制台中输入的某些 JS 会阻止表单在提交时重定向?

Ani*_*yal 5

如果你的页面上有 jQuery,并且你的表单有一个 ID,你可以在调试之前在控制台中运行它:

$("#formId").submit(function(e){ e.preventDefault(); });
Run Code Online (Sandbox Code Playgroud)

这可以在没有任何条件的情况下更详细地完成,如下所示:

document.getElementsByTagName("form")[0].onsubmit = function(e) {
  e.preventDefault();
};
Run Code Online (Sandbox Code Playgroud)

第二个假设有问题的表单是页面上的第一个表单。该指数可能需要调整。

对于所有带有 jQ​​uery 的表单:

$("form").submit(function(e){ e.preventDefault(); });
Run Code Online (Sandbox Code Playgroud)

或者没有 jQuery:

Array.from(document.getElementsByTagName("form")).forEach(
  (form) => {
    form.onsubmit = function(e) { e.preventDefault(); };
  });
Run Code Online (Sandbox Code Playgroud)

注意 - 该函数是通过 Array 原型调用的,因为document.getElementsByTagName返回 HTMLCollection 而不是 Array。

对于没有 jQuery 的两者,如果您尝试测试已经绑定到表单的提交处理程序,则可能会遇到问题。如果是这种情况,请更换

form.onsubmit = function(e) { e.preventDefault(); };
Run Code Online (Sandbox Code Playgroud)

有了这个:

form.addEventListener("submit", function(e) {
  e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

它稍长一些,但不会覆盖绑定到表单的任何现有事件处理程序。