代码之家  ›  专栏  ›  技术社区  ›  Ty W

jquery:如何获取文件上传输入字段的“值”

  •  13
  • Ty W  · 技术社区  · 15 年前

    是否可以使用javascript/jquery确定用户是否为特定输入类型的字段选择了文件?

    我为ExpressionEngine(基于PHP的CMS)开发了一个自定义字段类型,允许用户在AmazonS3上上传和存储文件,但最流行的EE托管服务将最大文件上传限制为20。我想允许用户上载20个文件,再次编辑条目以添加20个文件等。不幸的是,在编辑条目后,最初的20个文件有一个“替换此图像”文件输入字段,似乎正在排除上载新图像的可能性。提交表单时,我想通过javascript删除所有未使用的文件输入字段。

    3 回复  |  直到 12 年前
        1
  •  20
  •   Peter Bailey    15 年前

    是-可以读取值,甚至可以绑定到 change 如果你愿意的话。

    <html>
    <head>
      <title>Test Page</title>
      <script src="http://code.jquery.com/jquery-latest.js"></script>
      <script type="text/javascript">
      $(function()
      {
        $('#tester').change( function()
        {
          console.log( $(this).val() );
        });
      });
      </script>
    </head>
    
    <body>
    
    <input type="file" id="tester" />
    
    </body>
    </html>
    

    但是,还有其他多个上载解决方案可能更适合您的需要,例如发布的bpterson76。

        2
  •  2
  •   Peter Örneholm    15 年前

    此代码将从表单中删除所有空文件输入,然后提交:

    HTML:

    <form action="#">
      <input type="file" name="file1" /><br />
      <input type="file" name="file2" /><br />
      <input type="file" name="file3" /><br />
      <input type="file" name="file4" /><br />
      <input type="file" name="file5" /><br />
    
      <input type="submit" value="Submit" />
    </form>
    

    JavaScript:

    $(function() {
      $("form").submit(function(){
        $("input:file", this).filter(function(){
          return ($(this).val().length == 0);
        }).remove();
      });
    });
    

    例子: http://jsbin.com/axuka3/

        3
  •  0
  •   bpeterson76    15 年前

    为了我的目的,这个上传器工作得很好: http://webdeveloperplus.com/jquery/ajax-multiple-file-upload-form-using-jquery/

    使用它作为编码基础的好处是文件是异步上传的,因此一次不需要限制为20个。在用户搜索时进行上传有一个明确的用户界面优势。

    如果你需要的话,调整大小也是一个不错的功能!