【问题标题】:How can I use two separted image upload preview?如何使用两个分开的图像上传预览?
【发布时间】:2020-04-14 21:21:04
【问题描述】:

所以我找到了一个很棒的代码 sn-p 我想在我的代码中使用它,这里是:https://codepen.io/siremilomir/pen/jBbQGo

我的问题是我想使用其中的 2 个并排使用。我重写了 ID,用新的 ID 复制了两次脚本,但我很确定这不是我应该做的方式。不幸的是,我的 JavaScript 真的很糟糕,我想问题是这个函数到处都是相同的 input 东西,我不知道它是什么。

另一个问题是FontAwesome图标不显示,请问是什么问题? 我阅读了这篇文章并尝试了所有方法,但仍然无法正常工作:Font Awesome & Unicode

我试过这个:

function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function(e) {
            $('#indexImage1').css('background-image', 'url('+e.target.result +')');
            $('#indexImage1').hide();
            $('#indexImage1').fadeIn(650);
        }
        reader.readAsDataURL(input.files[0]);
    }
}
$("#indexImage1Upload").change(function() {
    readURL(this);
});

function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function(e) {
            $('#indexImage2').css('background-image', 'url('+e.target.result +')');
            $('#indexImage2').hide();
            $('#indexImage2').fadeIn(650);
        }
        reader.readAsDataURL(input.files[0]);
    }
}
$("#indexImage2Upload").change(function() {
    readURL(this);
});
body {
    background: whitesmoke;
    font-family: 'Open Sans', sans-serif;
}

.container {
    max-width: 960px;
    margin: 30px auto;
    padding: 20px;
}


.avatar-upload {
    position: relative;
    max-width: 205px;
    margin: 50px auto;
}

.avatar-upload .avatar-edit {
    position: absolute;
    right: 12px;
    z-index: 1;
    top: 10px;
}

.avatar-upload .avatar-edit input {
    display: none;
}

.avatar-upload .avatar-edit input+label {
    display: inline-block;
    width: 34px;
    height: 34px;
    margin-bottom: 0;
    border-radius: 100%;
    background: #FFFFFF;
    border: 1px solid transparent;
    box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.12);
    cursor: pointer;
    font-weight: normal;
    transition: all .2s ease-in-out;
}

.avatar-upload .avatar-edit input+label:hover {
    background: #f1f1f1;
    border-color: #d6d6d6;
}

.avatar-upload .avatar-preview {
    width: 192px;
    height: 192px;
    position: relative;
    border-radius: 100%;
    border: 6px solid #F8F8F8;
    box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.1);
}

.avatar-upload .avatar-edit input+label::after {
    content: "\f040";
    font-family: 'FontAwesome';
    color: #757575;
    position: absolute;
    top: 10px;
    left: 0;
    right: 0;
    text-align: center;
    margin: auto;
}

.avatar-upload .avatar-preview>div {
    width: 100%;
    height: 100%;
    border-radius: 100%;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
    <div class="avatar-upload">
        <div class="avatar-edit">
            <input type='file' id="indexImage1Upload" accept=".png, .jpg, .jpeg" />
            <label for="indexImage1Upload"></label>
        </div>
        <div class="avatar-preview">
            <div id="indexImage1" style="background-image: url(http://i.pravatar.cc/500?img=7);">
            </div>
        </div>
    </div>
    
    <div class="avatar-upload">
        <div class="avatar-edit">
            <input type='file' id="indexImage2Upload" accept=".png, .jpg, .jpeg" />
            <label for="indexImage2Upload"></label>
        </div>
        <div class="avatar-preview">
            <div id="indexImage2" style="background-image: url(http://i.pravatar.cc/500?img=7);">
            </div>
        </div>
    </div>
</div>

【问题讨论】:

    标签: javascript jquery css font-awesome-5


    【解决方案1】:

    您正在使用两个同名的函数。它无法分辨它们之间的区别。

    您可以重命名函数,或者更好,因为它们正在做同样的事情,您可以使用参数并以这种方式调用它们。

    function readURL(inputElement, imageElement) {
        if (inputElement.files && inputElement.files[0]) {
            var reader = new FileReader();
    
            reader.onload = function(e) {
                imageElement.css('background-image', 'url('+e.target.result +')');
                imageElement.hide();
                imageElement.fadeIn(650);
            }
    
            reader.readAsDataURL(inputElement.files[0]);
        }
    }
    

    然后当你设置监听器时。

    $("#indexImage1Upload").on('change', function () {
        readURL(this, $('#indexImage1'));
    });
    
    $("#indexImage2Upload").on('change', function () {
        readURL(this, $('#indexImage2'));
    });
    

    你可以在这里看到它的工作原理:https://jsfiddle.net/gv1Ls987/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 2013-01-27
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 2017-01-17
      相关资源
      最近更新 更多