jQuery event.Preventdefault();没有做任何事情

时间:2013-07-27 10:39:30

标签: javascript jquery html

我的网站上有一些脚本可以将回复发送到服务器并使用ajax重新加载页面。有时候,它会毫无理由地重新加载页面。

所以我添加了这段代码

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

但是当我点击sumbit时它仍在重新加载页面 这是为什么。

4 个答案:

答案 0 :(得分:7)

您只是忘了将事件参数引入处理程序:

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

另外:检查错误控制台,在示例代码中您缺少结束括号} );

作为旁注:请确保在加载form元素后选择它,以便安全使用domReady

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

答案 1 :(得分: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()。你只想要第一个发生,所以要明确。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在对另一个答案的评论中,你说过:

  

它仍然重新加载页面

这表示您希望在HTML中使用此表单上面的 。将脚本移动到表单下方(通常在结束</body>标记之前),或者使用jQuery的ready事件。

另请注意,如果您使用return false,则不需要event.preventDefault,因为来自jQuery事件处理程序的return false执行event.preventDefault()event.stopPropagation() },所以:

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

或者,在页面的任何位置,使用ready的快捷方式:

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