防止默认不起作用

时间:2015-04-15 17:03:06

标签: javascript jquery preventdefault

我在这里查了一下,这里的解决方案都没有解决我的问题。 我似乎无法使preventDefault()工作。代码如下:

Jquery的:

$("#changepassword").submit(function(event) {
    event.preventDefault(); // stop normal form submission
    $.ajax({
        url: "changePassword.php",
        type: "POST",
        data: $(this).serialize(), // you also need to send the form data
        dataType: "html",
        success: function(html) {
            $("#s-window").append(html);
        }
    });
});

HTML:

    <div id="s-window">
        <form id="changepassword" action="changePassword.php" method="POST">
            <input type="password" name="currentPassword" placeholder="Current Password"/>
            <input type="password" name="newPassword" placeholder="New Password"/>
            <input type="password" name="confirmPassword" placeholder="Confirm Password"/>
            <input class="button" type="submit" value="Change Password" />
        </form>
    </div>

我的空气中没有错误。 changePassword.php按预期工作。但是,不是更新我的#s窗口,而是将其重定向到changePassword.php页面

如何重新编码以使页面上的所有内容都发生?

4 个答案:

答案 0 :(得分:1)

您可以使用return false;尝试这种方式,如果您有任何疑惑,请参阅此处event.preventDefault() vs. return false

$("#changepassword").submit(function(event) {
  //event.preventDefault(); // stop normal form submission
   return false;
});

答案 1 :(得分:1)

您需要等到文档准备就绪:

$(document).ready(function(){
    $("#changepassword").submit(function(event) {
        event.preventDefault(); // stop normal form submission
        $.ajax({
            url: "changePassword2.php",
            type: "POST",
            data: $(this).serialize(), // you also need to send the form data
            dataType: "html",
            success: function(html) {
                $("#s-window").append(html);
            }
        });
    });
});

答案 2 :(得分:0)

在你的ajax呼叫更改dataType: "html"dataType: "script"

答案 3 :(得分:0)

至少在IE中,event是一个全局变量(根据Is 'event' a reserved word in JavaScript?)。这可能不是您的问题的原因,但是改变您的命名可能是个好主意。