文件选择后是否可以立即提交file_field_tag“浏览”按钮?

时间:2012-10-05 20:51:55

标签: ruby-on-rails

现在它的功能是允许我选择文件,但我需要点击另外一个“提交”按钮来进行表单提交。是否可以将浏览按钮的功能与表单提交相结合? Rails中是否有功能,还是需要使用javascript创建自定义ajax调用?谢谢!

当前代码:

  = form_for @user, :url => add_file(@user), :remote => true do |f|
      = file_field_tag :file

3 个答案:

答案 0 :(得分:1)

Rails没有这样的功能。

您需要编写javascript来执行此操作,但不需要进行ajax调用。

相反,定义file_field_tag,但使用CSS display:none;隐藏它。然后定义一个实现你的javascript的按钮。您的javascript应该调用隐藏的file_field_tag,然后提交表单。

<% form_for @user, :url => add_file(@user), :remote => true do |ff| %>
  <%= ff.file_field_tag "file", "id" => "file_select_input", "style" => "display:none" %>
  <%= ff.button "upload", "onclick" => "<your-javascript-call>" %>
<% end %>

很抱歉不在HAML中写这个,但我把它留给你。:)

答案 1 :(得分:1)

为此你需要使用jquery肯定... 我使用以下功能

做了同样的事情

这是我的HTML代码: -

<div class="third"><input name="upload" value="" type="text"/>&nbsp;<span class="activebtn sm"><a href="" class="btn">Browse...</a></span><input type="file" name="images[]" onchange="displayPreview(this.files,this)" class="image_upload" size="23" id="image_upload1"/></div>

在改变时我写了jquery

 function displayPreview(files,obj)
  {
    curr_file_obj = $(obj);
    if(window.FileReader)
    {
      var reader = new FileReader();
      reader.onload = onFileLoad;
      reader.readAsDataURL(files[0]);
    }

  }

我的要求是上传图片并在我上传后立即显示其预览。

答案 2 :(得分:0)

使用rails无法实现,但你可以考虑使用像fine uploader

这样的javascript插件