javascript - 使用标签选择图像文件但有属性显示输入

标签 javascript html ruby-on-rails twitter-bootstrap

我希望用于选择项目的标签(因此选择文件)消失了。

这是我的 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>

您还可以显示文件的预览(当然,如果它是图像)Preview an image before it is uploaded

关于javascript - 使用标签选择图像文件但有属性显示输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32326294/

相关文章:

javascript - 如何将js中声明的变量输入到node.js中的mssql查询中?

ruby-on-rails - 给定有序的 id 列表对对象数组进行排序

javascript - 通过 link_to Rails 4 将参数传递给 Controller ​​方法

javascript - HTML 表单不传递从 jQuery 动态添加的输入

javascript - Puppeteer:按 ID 选择的输入字段返回未定义

html - 左侧栏响应问题

jquery 更改文本并将其替换为链接

ruby-on-rails - Rails 3 覆盖 Devise session Controller

javascript - 如何在javascript中替换字符串的一部分

html - 将字符对齐到相邻字母的顶部