使用jquery在多个文件输入上显示图像预览的问题

时间:2014-10-20 23:11:00

标签: jquery html image-uploading

我无法让预览图像显示在多个文件输入字段中。

我在这里看过很多关于它的帖子,尝试了一些不同的东西,但我似乎无法理解它。

我已将我的代码添加到jsfiddle(http://jsfiddle.net/5boja3mL/1/),因此可以看到它正常工作。

HTML

<div class="upload_main">
<div class="upload_label">
    <label>Main Photo</label>
</div>
<div class="upload_action">
    <input type="file" name="files[]" id="control" class="upload_one" style="display: none;" />
    <input type="button" value="Browse..." onclick="document.getElementById('control').click();" />
</div>
<div class="upload_placehold">
    <img id="blah" src="http://placehold.it/100x100" alt="your image" />
</div>
<div class="upload_clear">
    <a id="clear">Remove</a>
</div>
</div>


<div class="upload_main">
<div class="upload_label">
    <label>Main Photo</label>
</div>
<div class="upload_action">
    <input type="file" name="files[]" id="control_one" class="upload_one" style="display: none;" />
    <input type="button" value="Browse..." onclick="document.getElementById('control_one').click();" />
</div>
<div class="upload_placehold">
    <img id="blah_one" src="http://placehold.it/100x100" alt="your image" />
</div>
<div class="upload_clear">
    <a id="clear_one">Remove</a>
</div>
</div>

jquery

// Main Image
var control = $("#control");

$("#clear").on("click", function () {
    control.replaceWith( control = control.clone( true ) );
});

$("#clear").click(function(){
    $('#blah').attr('src', 'http://placehold.it/100x100');
});

function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#blah').attr('src', e.target.result);
        }

        reader.readAsDataURL(input.files[0]);
    }
}

$("#control").change(function(){
    readURL(this);
});


// Second Image
var control = $("#control_one");

$("#clear_one").on("click", function () {
    control.replaceWith( control = control.clone( true ) );
});

$("#clear_one").click(function(){
    $('#blah_one').attr('src', 'http://placehold.it/100x100');
});

function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#blah_one').attr('src', e.target.result);
        }

       reader.readAsDataURL(input.files[0]);
    }
}

$("#control_one").change(function(){
    readURL(this);
});

示例代码中显示了2个输入,但将有7个文件输入。

如果我使用第一个文件输入选择图像,它会将预览添加到最后一个文件输入。

感谢。

1 个答案:

答案 0 :(得分:0)

我现在有这个工作,我会在几分钟后发布解决方案。