Я настроил кнопку загрузки формы и скрыл поле input
с помощью css display:none
, но когда я выбираю изображение, ввод не показывает текст предварительного просмотра!
Я хочу отобразить текст предварительного просмотра выбранного изображения, чтобы пользователь знал, что он выбрал изображение!
HTML:
<div class = "form-group">
<label for = "before_image" class = "custom-file-upload"><i class = "fa fa-cloud-upload"></i> Before Image*</label>
<input type = "file" id = "before_image" name = "before_image" class = "form-group" placeholder = "Before Image" data-bind = "value: before_image">
<span>No file chosen</span>
</div>
CSS:
.custom-file-upload {
border: 1px solid #ccc;
display: inline-block;
padding: 6px 12px;
cursor: pointer;
}
input[type=file] {
display: none;
}
input[type=file]{
display:none;
}
.custom-file-upload {
border: 1px solid #ccc;
display: inline-block;
padding: 6px 12px;
cursor: pointer;
}
<div class = "form-group">
<label for = "before_image" class = "custom-file-upload"><i class = "fa fa-cloud-upload"></i> Before Image*</label>
<input type = "file" id = "before_image" name = "before_image" class = "form-group" placeholder = "Before Image" data-bind = "value: before_image"> <span>No file chosen</span>
</div>
Обновлено: Я перепробовал все эти решения (Как отобразить имя файла для входного файла с пользовательским стилем с помощью jquery?), но ни одно из них мне не помогло. В моем сценарии у меня есть две кнопки загрузки: одна — before image upload
, а вторая — after image upload
, как показано на видео.
Тем не менее я не могу отобразить текст предварительного просмотра перед кнопками загрузки.
Это не работает, потому что ваш <span>No file chosen</span>
статичен.
Пытаться:
<div class = "form-group">
<label for = "before_image" class = "custom-file-upload"><i class = "fa fa-cloud-upload"></i> Before Image*</label>
<input type = "file" id = "before_image" name = "before_image" class = "form-group" placeholder = "Before Image" data-bind = "value: before_image">
<span id = "images"></span>
</div>
<script type = "text/javascript">
var field = document.getElementById('before_image');
var span = document.getElementById('images');
field.addEventListener('change', function() {
var img = document.createElement('img');
img.src = field.files[0].getAsDataURL();
span.appendChild(img);
});
</script>
Ошибка консоли: Uncaught TypeError: field.files.item(...).getAsDataURL не является функцией
Попробуйте еще раз, я исправил. field.files[0].getAsDataURL();
Спасибо за ответ, но все равно написано: Uncaught TypeError: field.files[0].getAsDataURL is not a function
Просто добавьте новую функцию в файл типа ввода в событии onchange. Пожалуйста, найдите прикрепленный код.
input[type=file]{
display:none;
}
.custom-file-upload {
border: 1px solid #ccc;
display: inline-block;
padding: 6px 12px;
cursor: pointer;
}
<div class = "form-group">
<label for = "before_image" class = "custom-file-upload"><i class = "fa fa-cloud-upload"></i> Before Image*</label>
<input type = "file" id = "before_image" name = "before_image" class = "form-group" placeholder = "Before Image" data-bind = "value: before_image" onChange = "((e)=>{
file = e.target.files.item(0);
var fr = new FileReader;
fr.onloadend =(imgsrc)=>{
imgsrc = imgsrc.target.result; // file reader
var img = document.createElement('img');
img.src =imgsrc;
this.nextSibling.nextSibling.innerHTML='';
this.nextSibling.nextSibling.appendChild(img);
};
fr.readAsDataURL(file);
})(event)">
<span>No file chosen</span>
</div>
Возможный дубликат Как отобразить имя файла для входного файла с пользовательским стилем с помощью jquery?