2013-07-27 105 views
0

我的网站上有一些脚本发送回复到服务器并使用ajax重新加载页面。有时候,它无故重新加载页面。jQuery event.Preventdefault();没有做任何事情

,所以我说这个代码

<script type="text/javascript"> 
     $("form").submit(function(){ 
      event.preventDefault(); 
      return false; 
      ) 
    </script> 

,但它仍然是重新加载页面时,我打透过。
为什么。

+1

你在哪里放置这个脚本标记?您可能需要使用domready或将脚本标记放在窗体标记之后。 – David

回答

7

您只需忘了带在事件参数的处理程序:

$("form").submit(function(event) { 

另外:检查错误控制台,在您的示例代码你缺少一个结尾括号});

作为一个方面说明:请确保您选择form元素已经加载之后,为了安全起见使用domReady

$(function() { 
    $("form").submit(function(event){ 
     event.preventDefault(); 
    }); 
}); 
+0

优先于'ready'事件,只需将脚本放在文档的末尾,即在结束''标签之前。更多:[YUI最佳实践](http://developer.yahoo.com/performance/rules.html#js_bottom)| [Google Closure Engineers何时准备好DOM](https://groups.google.com/forum/#!msg/closure-library-discuss/G-7Ltdavy0E/RjllWWJTXAcJ) –

0
$("form").submit(function(event){}) 
1

event作为全球(window.event)是非标准。 jQuery的标准化这个给你,所以才在event作为参数传递:

$(document).ready(function() { // Make sure you wait until the document is ready 
    $("form").submit(function(event) { 
     event.preventDefault(); 
    }); 
}); 

此外,返回false电话event.preventDefault()以及event.stopPropagation()。你只想要第一个发生,所以要明确。

0

在另一个答案评论,你说:

它仍然重新加载页面

这表明你有这样的代码上述你想要采取行动的形式在HTML中。将表格下方的脚本移动(通常在关闭</body>标记最好之前),或者使用jQuery的ready事件。

还要注意的是,如果你使用return false,你不需要event.preventDefault,因为return false从jQuery的事件处理程序event.preventDefault()event.stopPropagation(),所以:

<form ...> 
<!-- ... --> 
</form> 
<!-- ... --> 
<script> 
$("form").submit(function(){ 
    return false; 
}); 
</script> 
</body> 

或者交替,页面上的任何地方这,使用快捷键ready

$(function() { 
    $("form").submit(function(){ 
     return false; 
    }); 
});