多个输入文件元素上的addEventListener

问题描述 投票:0回答:1

我有一个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'。

在这些条目中,我创建了输入文件元素。因此,人们可以为正确的广告系列上传正确的文件。

但是如何使用addEvenListener这个例子的正确方法呢?

我希望有人可以教育我。

提前致谢

javascript php jquery addeventlistener form-data
1个回答
1
投票

你可以使用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)

© www.soinside.com 2019 - 2024. All rights reserved.