Javascript TypeError:e.preventDefault不是一个函数

Javascript TypeError:e.preventDefault不是一个函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我是javascript和jquery的新手。我在这段代码中使用了两个jquery插件。一个是Jquery表单验证程序,另一个是Jquery表单ajaxSubmit。对于普通的ajax提交,代码运行良好,但现在我也不得不发布一个文件。所以我使用ajaxSubmit。当我运行这个程序时,我在浏览器控制台上得到一个错误“TypeError:e.preventDefault不是一个函数” 请不要将此标记为重复问题,因为同一主题的其他问题的答案对我不适用 <script type="text/ja

我是javascript和jquery的新手。我在这段代码中使用了两个jquery插件。一个是Jquery表单验证程序,另一个是Jquery表单ajaxSubmit。对于普通的ajax提交,代码运行良好,但现在我也不得不发布一个文件。所以我使用ajaxSubmit。当我运行这个程序时,我在浏览器控制台上得到一个错误“TypeError:e.preventDefault不是一个函数”

请不要将此标记为重复问题,因为同一主题的其他问题的答案对我不适用

<script type="text/javascript">
    $(document).ready(function() {

        $("#addpost").validate({
            rules: {
                subject: "required",
                comment: "required"
            },
            messages: {
                subject: "Please enter a subject",
                comment: "Please enter some details",                   
            },
            submitHandler: function(e){
                e.preventDefault();
                $.ajaxSubmit({
                    url: '/addpost',
                    type: 'post',
                    dataType: 'html',
                    data : $( "#addpost" ).serialize(),
                    success : function(data) {
                        location.reload();
                    }
                });
            }
        });     

    }); 
</script>

希望这会对某人有所帮助。

我不确定您是否会在提交处理程序中使用
e.preventDefault()

删除该行并添加
returnfalse在ajax提交之后。

这将阻止表单的提交。

您在
提交程序中使用的
e
不提供事件对象。它提供您正在验证的表单对象!因此,您将得到错误。请阅读文档,以便了解您正在处理的对象和回调


您的
e
不是事件,而是表单元素。按如下方式更改代码:

submitHandler: function(form,e){ // place your element on second parameter
            e.preventDefault();
            $.ajaxSubmit({
                url: '/addpost',
                type: 'post',
                dataType: 'html',
                data : $( "#addpost" ).serialize(),
                success : function(data) {
                    location.reload();
                }
            });
        }

阅读
submitHandler
的文档:它告诉您它收到了哪些参数。感谢您的回答。但现在错误出现在ajaxSubmit“TypeError:$.ajaxSubmit不是函数”上。我们可以在另一个插件中使用一个插件吗?这是正确的方法吗?检查“网络”选项卡,查看获取jqeury文件时是否有错误。@DimalChandrasiri我没有收到任何错误。问题实际上是语法错误。
submitHandler: function(form,e){ // place your element on second parameter
            e.preventDefault();
            $.ajaxSubmit({
                url: '/addpost',
                type: 'post',
                dataType: 'html',
                data : $( "#addpost" ).serialize(),
                success : function(data) {
                    location.reload();
                }
            });
        }