fadeOut() 方法不适用于 event.preventdefault()

fadeOut() method won't work with event.preventdefault()

本文关键字:event preventdefault 适用于 方法 fadeOut 不适用      更新时间:2023-09-26

当我的表单提交并验证时,我希望我的对话框淡出并关闭,我不希望页面自动刷新。如果我使用 preventdefault,页面不会刷新,但对话框也不会关闭。我还需要做什么?

$("#form").validate({
    rules: {
          number : {
            required: true
        }                                        
    },
    messages: {
        number : {
            required: "enter a phone number"                   
        }
    },
    submitHandler: function(form,event) {
        event.preventDefault();
    //this prevents a double click on the form button
    $("form :input:submit").click(function() {
             this.disabled = 'disabled';
    });
     //Here I want the dialog to slowly fade, then close, *then* reload the page. 
     //but it won't fade or close when I'm using preventDefault(). 
    $('#dialog').fadeOut('slow', function(){
            $( this ).dialog( "close" );
          location.reload();
        });

    }  //closes submit handler  
});//close validate

问题是submitHandler只收到 1 个参数form,因此尝试调用event.preventDefault();将导致异常并停止执行以下脚本。

回调传递一个参数:

形式

类型:元素 当前正在验证的表单,作为 穹顶。

从文档

尝试在函数结束时return false;

submitHandler: function(form) {
    $("form :input:submit").click(function() {
             this.disabled = 'disabled';
    });
    $('#dialog').fadeOut('slow', function(){
            $( this ).dialog( "close" );
          location.reload();
        });
    return false;
    } 

你可以把event.preventDefault();放在submithandler函数的末尾。