我对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>
我的问题的解决方案是将submit handler更改如下:
submitHandler: function(form){
$(form).ajaxSubmit({
url: '/addpost',
type: 'post',
dataType: 'html',
data : $( "#addpost" ).serialize(),
success : function(data) {
location.reload();
}
});
return false
}
希望这能帮到某个人。
submitHandler
的文档:http://jqueryvalidation.org/validate/ ,它会告诉你它接收什么参数。 - Evan Trimboli