代码之家  ›  专栏  ›  技术社区  ›  Stephan Tips

多输入文件元素上的addEventListener

  •  0
  • Stephan Tips  · 技术社区  · 6 年前

    我有一个foreach循环,它为我提供了多个(大约5个)文件输入元素。

    我让表单使用一个简单的提交按钮,但我希望它也能在没有按钮的情况下工作(选中后上传)。

    我一直试图让Js或jQuery对单击的任何按钮做出反应。

    我的 php 提供上载按钮:

    <?php
      $getCampaign = new Crud();
      $query = "SELECT * FROM `table`";
      $aRow = $getCampaign->getData($query);
    
      if ($aRow == false){
        echo '<div class="alert alert-danger">No Campaigns!<br/></div>';
      } else { 
        foreach ($aRow as $row) {
          echo '<div class="row marginBottom">';
          echo '<div class="col-sm-2"><strong> '. $row['campaign'] .' </strong></div>';
          echo '<div class="col-sm-5"> '. $row['sort'] .'</div>';
          echo '<div class="col-sm-5">
            <form method="post" enctype="multipart/form-data"  action="process-upload-excel.php">
            <input type="file" id="' . $row['campaign'] . $row['sort'] .'" class="btn btn-primary btn-sm">
            <button type="submit" class="addfile">Upload File!</button>
          </form>';
          echo '</div></div>';
      }
    <hr/>
    
      <div id="content">
          <div id="response"></div>
            <ul id="image-list">
            </ul>
      </div>
    

    开始时间 js (到目前为止我得到的信息):

    //Check for FormData
    if (window.FormData) {
      formdata = new FormData();
      $(".addfile").css("display", "none");
    }
    
    ???.addEventListener("change", function (evt) {
      document.getElementById("response").innerHTML = '<i class="fa fa-spinner fa-pulse fa-2x fa-fw"></i><span class="sr-only">Loading...</span>';
    // rest of code checking name of file etc.
    }
    

    我在DB中得到了“Campaign”和“Sort”。

    我从这些条目中创建输入文件元素。 这样人们就可以为正确的活动上传正确的文件。

    但是,对于这个示例,如何正确使用AddEventListener?

    我希望有人能教育我。

    提前感谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ali Soltani    6 年前

    您可以使用 delegate 这样做:

    html

    <div id="content">
    
    </div>
    

    JS公司

    // Add two uploaders
    for (var i = 1; i <= 2; i++) {
      $('#content').append($('<input type="file" id="uploader' + i + '">'));
    }
    
    // Add listener for them
    $("#content").delegate("input[type=file]", "change", function() {
      alert($(this).attr("id"));
    });
    

    Online demo (Fiddle)