【问题标题】:why e.preventDefault() not working [closed]为什么 e.preventDefault() 不起作用[关闭]
【发布时间】:2014-05-06 12:54:47
【问题描述】:

这是一个简单的表单,带有简单的 JavaScript 代码,但我不知道问题出在哪里。
我已经使用preventdDefault() 停止表单提交,但它似乎忽略了该命令并跳转到操作页面。 以下是 JavaScript 代码。这有什么问题?我不知道,我在这上面花了 5 个小时。

$(document).ready(function(){
    $('#submit').click(function(e){
        e.preventDefault();
    });
});

这是有史以来最简单形式的链接,但这项工作似乎就像去火星......

http://jsfiddle.net/FqnFd/

【问题讨论】:

  • Working jsfiddle.net/satpalsingh/ea3qc,您忘记在代码中包含 jquery。您应该处理表单submit 事件而不是按钮单击事件
  • 那是因为你的代码中没有包含jquery,请尝试jsfiddle.net/FqnFd/1
  • 我已经在我的网站上做了...我还没有放入 jsfiddle...
  • 您是否在实际代码环境中为此花费了 5 个小时?您是否检查过控制台是否有错误?您是否在项目中包含了 jQuery 库?
  • @user2365753 — 创建精简测试用例时,请确保不添加其他问题。如果您包含 jQuery,那么小提琴中的代码可以正常工作,所以原始问题是您没有(正确)包含 jQuery,或者它是您没有包含在测试用例中的东西。

标签: javascript jquery ajax ajaxform


【解决方案1】:

您的小提琴不使用 jQuery 作为库。选择 jQuery 版本,再次运行。它现在应该可以工作了。

【讨论】:

  • 这个答案太短了,你应该把它评论一下
  • 这将是一个适当的评论。我知道你还不能发表评论,但这并不能成为答案。
  • 好的,应该是评论,但这个答案不值得反对
  • 伙计们,冷静点@lesssugar 不需要评论声望
  • @Hawk — 一个答案不需要很长就可以作为一个答案。
【解决方案2】:

这是因为在触发 jquery 之前提交了表单。

因此,不要将它放在事件“点击”上,而是将触发器放在“提交”上。像

jQuery ( document ).ready ( function () { 
     jQuery ( "form" ).submit (
         function ( e ) {
            e.preventDefault ( ) ;
        } ) ; 
  } ) ;

这会阻止页面上的所有表单被提交。您也可以将特定表单的“form”替换为“#formname”

【讨论】:

  • 没有。提交按钮上的点击事件在表单上的提交事件之前触发。
  • 您是否通过放置 javascript 警报框对其进行了测试?
  • @Quentin,同意submit button fires before the submit event on the form,但我认为处理表单提交事件更好。如果我错了,请纠正我。
  • @Satpal — 一般而言,是的,但值得对编码风格发表评论,而不是答案。
猜你喜欢
  • 2018-02-15
  • 2018-02-15
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
相关资源
最近更新 更多