0

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

所以我添加了这段代码

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

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

4

4 回答 4

7

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

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

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

附带说明:确保form在加载元素后选择元素,以安全使用domReady

$(function() {
    $("form").submit(function(event){
        event.preventDefault();
    });
});
于 2013-07-27T10:40:36.013 回答
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(). 你只希望第一个发生,所以要明确。

于 2013-07-27T10:43:21.127 回答
0

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

它仍然重新加载页面

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

另请注意,如果您正在使用return false,则不需要event.preventDefault,因为return false从 jQuery 事件处理程序中可以使用event.preventDefault()and event.stopPropagation(),因此:

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

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

$(function() {
    $("form").submit(function(){
        return false;
    });
});
于 2013-07-27T10:46:56.707 回答
0
$("form").submit(function(event){})
于 2013-07-27T10:42:03.687 回答