使用标签选择图像文件,但有属性显示输入
Use label to select image file but have attribute displayed input
我希望有标签被用于项目的选择(所以选择文件)已经消失了。
我的HTMl:
<div class="form-group">
<label class="btn btn-primary trigger" for="broker_image">Upload Image</label>
<input style="display:none;" class="uploadBtn" type="file" name="broker[image]" id="broker_image">
</div>
它可以工作,尽管我没有实际显示名称的图像(这是输入标记的一部分)
这里是js试图使它显示(这是100%可编辑的):
document.getElementsByClassName("trigger").onClick = function () {
document.getElementsByClassName("uploadFile").style.display = 'block';
document.getElementsByClassName("uploadFile").value = this.value;
};
尝试:
document.getElementsByClassName("trigger").onClick = function () {
document.getElementsByClassName("uploadFile")[0].style.display = 'block';
document.getElementsByClassName("uploadFile")[0].value = this.value;
};
运气不好。
JSFiddle:http://jsfiddle.net/07zw6h3q/
我失去了仅仅使文件名显示,没有一些疯狂的javascript添加。些简单的东西。使用Rails 4.2和Bootstrap.
您需要使用change
事件
$('.uploadBtn').change(function(){
var a = $(this).val().split('''');
$('.trigger').html(a[a.length - 1]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group">
<label class="btn btn-primary trigger" for="broker_image">Upload Image</label>
<input style="display:none;" class="uploadBtn" type="file" name="broker[image]" id="broker_image">
</div>
也可以显示文件的预览(当然如果是图像)在上传之前预览图像
JSFiddle