0
如何使用自定义上传文件?自定义文件输入
<%= f.file_field :image, class: 'inputfile' %>
<label for="image">Choose an image</label>
我希望将“选择图像”与“选择文件”
如何使用自定义上传文件?自定义文件输入
<%= f.file_field :image, class: 'inputfile' %>
<label for="image">Choose an image</label>
我希望将“选择图像”与“选择文件”
你的JavaScript缺少逻辑来获得所选择的文件名作为教程:
var fileName = e.target.value.split('\\').pop();
所以您的JavaScript将更新为:
input.addEventListener('change', function(e) {
var inspiration_image = e.target.value.split('\\').pop();
if(inspiration_image) {
label.querySelector('span').innerHTML = inspiration_image;
} else {
label.innerHTML = labelVal;
}
});
更新完整的cod e
<%= file_field_tag :image, class: 'inputfile' %>
<label for="inspiration_image">Choose a file</label>
<script>
var inputs = document.querySelectorAll('.inputfile');
Array.prototype.forEach.call(inputs, function(input) {
var label = input.nextElementSibling,
labelVal = label.innerHTML;
input.addEventListener('change', function(e) {
var fileName = '';
if(this.files && this.files.length > 1) {
fileName = (this.getAttribute('data-multiple-caption') || '').replace('{count}', this.files.length);
} else {
fileName = e.target.value.split('\\').pop();
}
if(fileName) {
label.querySelector('span').innerHTML = fileName;
} else {
label.innerHTML = labelVal;
}
});
});
</script>
对不起,Hieu没有工作。当我替换教程'file'和'files'时,你认为我把'inspiration_image'放在了正确的位置上?文件输入的完整html:'选择一个文件' –
我是不确定,让我们更新您对当前问题以及预期结果有何疑问? –
当前问题与以前相同,即选择文件后,“选择图像”文本没有更改为所选文件的名称,这是预期结果。对不起,idk如果澄清是有帮助的。 –