Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Пользовательская кнопка загрузки файла не работает в Microsoft Edge

Автор вопроса: peteОтветов: 2

Я пытаюсь создать пользовательскую кнопку загрузки изображения, которая очень хорошо работает в Chrome, Firefox и Opera, насколько я тестировал, но не будет работать в Microsoft Edge.

Вот пример: https://jsfiddle.net/k1xahf1k/2/

Код HTML:

    <div class="row">
            <div class="form-group col-sm-3 col-sm-offset-2 col-xs-10">
                <input id="filename-upload" placeholder="Bild hochladen" disabled="disabled"/>
            </div>
            <div class="form-group mobile-col-1 col-xs-1">
                <label class="btn-file-upload">
                    <span class="glyphicon glyphicon-file"></span>
                    <input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>
                    <input type="file" name="pictures" accept="image/*" hidden/>
                </label>
            </div>

            <div class="form-group col-sm-4 col-xs-12">
                <img id="preview" class="img-responsive img-preview" src="" alt=""/>
            </div>
        </div>

А вот CSS:

input {
     font-family: 'Open Sans', sans-serif;
     outline: 0;
     background: #f2f2f2;
     width: 100%;
     border: 0;
     margin: 0 0 15px;
     padding: 15px;
     box-sizing: border-box;
     font-size: 14px;
}

select::-ms-expand {
     display: none;
 }
select {
    -webkit-appearance: none;
    -moz-appearance: none;
     appearance: none;
}
      .btn-file-upload {
     background-color: transparent;
     color: #FF9800;
     font-size: 40px;
     margin: 0;
     -webkit-transition: all 0.3s ease 0s;
     -moz-transition: all 0.3s ease 0s;
     -o-transition: all 0.3s ease 0s;
     transition: all 0.3s ease 0s;
     cursor: pointer;
}

[hidden] {
     display: none !important;
}

Я был бы очень рад, если бы мне в этом помогли.

javascripthtmljquerycssmicrosoft-edge

Ответы

Ответ 1 · рейтинг 1 · DocMax

Edge не нравится, что ваша метка содержит два элемента управления вводом, даже если один из них имеет тип "скрытый". Если вы уберете скрытый, появится диалоговое окно открытия файла. Смотрите изменение здесь: https://jsfiddle.net/j257nepo/

<label class="btn-file-upload">
    <span class="glyphicon glyphicon-file"></span>
    <input type="file" name="pictures" accept="image/*" hidden/>
</label>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>

Ответ 2 · рейтинг 1 · Shubham Agrawal

вы можете просто использовать метку вместе с атрибутом for в метке и указать идентификатор для input type = 'file' и скрыть это с помощью стиля none.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы