【问题标题】:javascript execute event on clickjavascript单击时执行事件
【发布时间】:2015-11-24 15:28:19
【问题描述】:

我有这个代码:

<input type="file" id="imgLoader">
<button type="button" class="btn btn-primary" id="add-img">Add</button>

我正在关注这个方法:How to upload an image to a canvas with Fabric.js?

document.getElementById('imgLoader').onchange = function handleImage(e) {
var reader = new FileReader();
  reader.onload = function (event){
    var imgObj = new Image();
    imgObj.src = event.target.result;
    imgObj.onload = function () {
      var image = new fabric.Image(imgObj);
      image.set({
            angle: 0,
            padding: 10,
            cornersize:10,
            height:110,
            width:110,
      });
      canvas.centerObject(image);
      canvas.add(image);
      canvas.renderAll();
    }
  }
  reader.readAsDataURL(e.target.files[0]);
}

是否可以仅在用户单击按钮后执行该事件?

【问题讨论】:

  • 你想,比方说,上传前先预览图片,然后决定是否上传图片?
  • 不,我在 modal 中有这个 html,所以必须有一些按钮,用户必须确认才能开始上传
  • 确认按钮的html在哪里?

标签: javascript fabricjs


【解决方案1】:

这没有意义,当您单击按钮时,文件尚未被选中,因此无法加载。它只是触发文件浏览器窗口。

$('#imgLoader').on('click', function(){
  $('#results').html('I fired');
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" id="imgLoader">
<pre id="results"></pre>

如果你想在不同的按钮中加载文件,你可以这样做:

document.getElementById('button').onclick = function handleImage(e) {
var reader = new FileReader();
  reader.onload = function (event){
    var imgObj = new Image();
    imgObj.src = event.target.result;
    imgObj.onload = function () {
      var image = new fabric.Image(imgObj);
      image.set({
            angle: 0,
            padding: 10,
            cornersize:10,
            height:110,
            width:110,
      });
      canvas.centerObject(image);
      canvas.add(image);
      canvas.renderAll();
    }
  }
  reader.readAsDataURL(document.getElementById('imgLoader').files[0]);
}

只需检查 files 是否为数组以及 [0] 元素是否有效。

【讨论】:

  • 如果 OP 表示另一个按钮,则可以。首先,他选择要上传的内容,当他选择了文件并点击确认按钮时,上传开始。现在它在没有确认的情况下开始更改
  • 那是可能的。
  • 好吧,我在模态中显示此内容,所以如果它只是加载并且用户不必确认上传等等,那就不好了。如果没有选择任何文件,我将在那里添加一些验证。我只是问是否可以在单击按钮后开始上传。
  • 谢谢,我有相同的代码,但我忘了更改最后一行 reader.readAsDataURL(document.getElementById('imgLoader').files[0]);
猜你喜欢
  • 1970-01-01
  • 2012-10-20
  • 2017-04-25
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多