在我的Rails应用程序中,我在同一页面上有多个文件输入字段。我使用下面的jQuery在附加文件时向用户显示文件名:
$(document).on('change', ':file', function() {
var input = $(this),
filename = input.val().replace(/^.*[\\\/]/g, '');
$(".filename[data-input='" + this.id + "']").text(filename);
});
<span class="filename" data-input="example-marketing-material-file"></span>
当抛出验证错误并且页面重新显示表单时,我必须从Carrierwave docs中提到的缓存隐藏字段中获取文件名,html输出如下所示:
<input id="example-marketing-material-file-cache" name="bid[example_marketing_material_cache]" type="hidden" value="1430984214-14326-1254/Banking_Details_Reader.pdf" />
发生验证错误后,如何更改当前的jQuery以将隐藏的文件字段值传递到我的文件名类中?
答案 0 :(得分:0)
请参阅https://stackoverflow.com/a/30114820/2811283以获取此问题的正确答案。使用了以下代码。
$(document).on("page:load ready", function() {
$files=$(".cached-filename");
// loop over selectors and update instance
$(".filename").text(function(idx, text) {
return $files.eq(idx).val().replace(/^.*[\\\/]/g, '');
})
});