1

可能重复:
使用带有 .change() 事件的输入类型 =“file”字段上传文件并不总是在 IE 和 Chrome 中触发

我有以下代码使用 .submit() 成功上传图像

// Photo Upload Form - AutoUpload
$('input#file').change(function() {
    var maxsize = '20971520';
    var fileExtension = $(this)
                            .val()
                            .split('.')
                            .pop()
                            .toLowerCase();

    if(this.files[0].size > maxsize) {
        $('h4#maxFileSizeExceeded').show();

    }else if($.inArray(fileExtension, ['gif','png','jpg','jpeg']) == -1) {
        $('h4#fileTypeNotAllowed').show();

    }else{
        if(pushState == '0') {
            $('div#uploadPercentage').hide();
            $('img#uploadGifLoaderHTML4').fadeIn('fast');
        }
        $('form#joinPhotoUploadForm').submit();
        jcrop_api.destroy();

        $('div#croppingBackgroundContainer').fadeIn(1000);
        $('div#cropBoxWrapper').css('margin-left', '0px');
    }
});

我遇到的问题是,如果用户再次请求相同的文件,则没有更改并且提交不会触发。

有没有办法再次请求同一个文件,或者再次知道它的同一个文件,或者可以对输入 type="file" 进行某种重置?

********************* 更新

      <form action="scripts/php/photo_processing.php?page=join&section=precrop" id="joinPhotoUploadForm" enctype="multipart/form-data">
        <input type="file" name="file" id="file"><br>
      </form>

用户单击浏览按钮并可以选择图像。如果用户选择不同的图像,图像将上传。但是,如果用户选择相同的图像,.change() 函数根本不会触发。我假设是因为它保持与以前相同的状态。

谢谢

4

1 回答 1

0

如果相同的文件被选中,input[type=file]则不会调用该change事件,因为没有更改。添加一个按钮以再次触发您的代码或使用submit表单上的事件。

于 2012-09-11T07:24:44.813 回答