使用jQuery重新显示表单后显示Carrierwave附件文件名

时间:2015-05-07 08:18:53

标签: javascript jquery html ruby-on-rails carrierwave

在我的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以将隐藏的文件字段值传递到我的文件名类中?

1 个答案:

答案 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, '');
    })
});