如果没有执行event.preventDefault(),则console.log不会在on('submit')中执行

dan*_*ast 1 javascript forms jquery google-chrome

这真的很奇怪:

$('form').on('submit', function(event) {
   console.log('submit > this=%o', this);
});
Run Code Online (Sandbox Code Playgroud)

提交表单时不会显示任何控制台消息,但是:

 $('form').on('submit', function(event) {
   console.log('submit > this=%o', this);
   event.preventDefault();
 });
Run Code Online (Sandbox Code Playgroud)

会显示出来.这是为什么?代码必须在任何情况下执行,以便preventDefault有任何影响!

我只在Chrome中测试过,我会说这是Chrome漏洞.或者我错过了吗?

小智 5

代码实际上工作,问题是控制台被立即清除,因为页面是由于表单提交而重新加载的.

该代码event.preventDefault();阻止了表单的提交.这就是控制台未清除的原因,您可以看到正在记录的文本.