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

时间:2015-11-09 01:18:51

标签: javascript jquery forms google-chrome

这真的很奇怪:

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

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

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

将展示它。这是为什么?在任何情况下都必须执行代码,以便preventDefault有效!

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

2 个答案:

答案 0 :(得分:5)

代码实际上有效,问题是由于表单提交而重新加载页面,因此立即清除控制台。

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

答案 1 :(得分:0)

按预期工作:)



$('form').on('submit',function(e){
console.log('hell',this)
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="http://www.google.com" method="POST">
  Field:<br>
  <input type="text" name="firstname">
  <input type="submit" name="submit">
</form>
&#13;
&#13;
&#13;