Errors with event.preventdefault

This doesn't work

JS:


    var currentPath = window.location.pathname;
    var currentPage = currentPath.substring(currentPath.lastIndexOf('/') + 1);

        $(function() { 

            $("#shoutBox").submit(function(event) {
                event.preventDefault();

                var values = $('#shoutBox').serialize();

                $.post("shoutbox.php", values)

                .done(function(data) {
                    $('input:text[name=shout]').val("JE SHOUT IS GEPOST! WACHT 1 MINUUT!");
                    $('input:text[name=shout]').attr('readonly', true);
                    setTimeout(
                        function() 
                        {
                            $('input:text[name=shout]').val("JE KAN EEN NIEUWE SHOUT MAKEN!");
                            $('input:text[name=shout]').attr('readonly', false);
                        }, 60000);
                });
            });
        });

        $(function() {
            $("#newName").submit(function(event) {
                event.preventDefault();

                var valuen = $('#newName').serialize();

                $.post("shoutbox.php", valuen)

                .done(function(data) {
                    reload();
                });
            });
        });

    function to_new_page(link)
    {
        $("#content").fadeOut(function()
            {
                $(this).load(link+" #content", function()
                {
                    $(this).fadeIn();
                })
            });
        history.pushState({change: "page"}, "RandomRadio", "/"+link);
    }

    function reload()
    {
        to_new_page(currentPage);
    }

Form #shoutBox works sucessfully.
But when I submit the form #newName twice, it will refresh the page.


Perhaps because your .done calls reload() ?

Nevertheless, I would add return false;

$("#newName").submit(function(event) {
            event.preventDefault();

            var valuen = $('#newName').serialize();

            $.post("shoutbox.php", valuen)

            .done(function(data) {
                reload();
            });
            return false;
        });

And please, fix your quotation. Either choose single or double quotes and stick to that.


I have a fix :)

I added a id to my submit buttons and used this


    $("#submitshout").live("click", function(event){

instead of


    $("#shoutBox").submit(function(event) {

链接地址: http://www.djcxy.com/p/51958.html

上一篇: TypeError:$ .ajax(...)不是函数吗?

下一篇: event.preventdefault发生错误