javascript - onchange 文件输入更改 img src 并更改图像颜色

标签 javascript jquery html opencart cpanel

onchange 事件无效。我应该怎么做才能在同一页面上获得结果。我不想重定向到任何其他页面来上传图片。这个问题是因为opencart吗?不知道cpanel这样写对不对。我正在使用 opencart 和 cpanel。还有其他办法吗?

HTML

 <input type='file' id="upload" onchange="readURL(this.value)" />
    <img id="img" src="#" alt="your image" />

脚本

function readURL(input) {
var url = input.value;
var ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase();
if (input.files && input.files[0]&& (ext == "gif" || ext == "png" || ext == "jpeg" || ext == "jpg")) {
    var reader = new FileReader();

    reader.onload = function (e) {
        $('#img').attr('src', e.target.result);
    }
    reader.readAsDataURL(input.files[0]);
}
else{
     $('#img').attr('src', '/assets/no_preview.png');
  }
}

JSFiddle

最佳答案

在调用 onchange 时只需要发送 this 对象而不是 this.value

<input type='file' id="upload" onchange="readURL(this)" />

因为你在你的函数中使用 input 变量作为 this ,就像在行

var url = input.value;// reading value property of input element

Working DEMO

编辑 - 尝试像下面这样使用 jQuery --

从输入字段中删除 onchange :

<input type='file' id="upload" >

绑定(bind)onchange事件到输入框:

$(function(){
  $('#upload').change(function(){
    var input = this;
    var url = $(this).val();
    var ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase();
    if (input.files && input.files[0]&& (ext == "gif" || ext == "png" || ext == "jpeg" || ext == "jpg")) 
     {
        var reader = new FileReader();

        reader.onload = function (e) {
           $('#img').attr('src', e.target.result);
        }
       reader.readAsDataURL(input.files[0]);
    }
    else
    {
      $('#img').attr('src', '/assets/no_preview.png');
    }
  });

});

jQuery Demo

关于javascript - onchange 文件输入更改 img src 并更改图像颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24837646/

相关文章:

javascript - 删除使用 div 创建的表中的一行

javascript - jQuery 动画按比例展开

javascript - Windows Phone 8 Javascript Canvas 不在整个页面上

javascript - 使用 React Navigation 多次堆叠同一屏幕

javascript - 使用 Webpack 时如何在 Service Worker 中导入脚本

javascript - 如何获取特定类属性的 html 元素中的数字?

jquery - 在进一步处理之前等待动态 DOM 更新

javascript - 无法修改 HTML 时如何更改脚本顺序?

javascript - 我怎样才能在另一个html中包含一个模板?

javascript - React 构建 block 文件和 list json 中出现意外语法错误