0

我有带有提交按钮和 input='file' 控件的 html 表单:

<form action="/Profile/UploadFile" enctype="multipart/form-data" method="post" onsubmit="OnUploadSubmit(this)"> 

OnUploadSubmit 函数如下所示:

  if (e.files[0].size > 5000000) {
        $('#upload_error').css('display', 'block');
        $('#upload_error').text('The file size is too large for upload')
        e.preventDefault();
        return false;
    }

    var files = e.files;
    var ext = $('#file_uploader').val().split('.').pop().toLowerCase();
    if ($.inArray(ext, ['jpeg', 'jpg', 'png']) == -1) {
        $('#upload_error').css('display', 'block');
        $('#upload_error').text('Only, jpg, jpeg, png is allowed');
        e.preventDefault();
        return false;
    }
    return true;
}

e.preventDefault() 并返回 false;无论如何,表格都不起作用。

有人知道我的问题是什么吗?

谢谢

4

4 回答 4

8

首先,您不能以这种方式使用 preventDefault ,因为您没有将事件对象传递给函数,然后:

onsubmit="return OnUploadSubmit(this)"

我推荐:

添加 id 属性并删除 onsubmit:

<form id="upload" action="/Profile/UploadFile" enctype="multipart/form-data" method="post"> 

jQuery:

$(function(){ // Document Ready

        $('#upload').submit(function(e){

        e.preventDefault();
         if (e.files[0].size > 5000000) {
                $('#upload_error').css('display', 'block');
                $('#upload_error').text('The file size is too large for upload')
            }

            var files = e.files;
            var ext = $('#file_uploader').val().split('.').pop().toLowerCase();
            if ($.inArray(ext, ['jpeg', 'jpg', 'png']) == -1) {
                $('#upload_error').css('display', 'block');
                $('#upload_error').text('Only, jpg, jpeg, png is allowed');
            }
        }

    });

});
于 2012-05-11T12:36:29.937 回答
3

您的 OnUploadSubmit 方法定义是否包含 e 作为参数?如果没有,e.preventDefault 将不起作用。

于 2012-05-11T12:33:13.697 回答
2

你试过onsubmit="return OnUploadSubmit(this);"代替onsubmit="OnUploadSubmit(this)"吗?

于 2012-05-11T12:34:51.373 回答
2

我想你需要onsubmit="return OnUploadSubmit(this)"

于 2012-05-11T12:35:20.750 回答