【问题标题】:onchange file input change img src and change image coloronchange 文件输入更改 img src 并更改图像颜色
【发布时间】:2014-09-10 08:06:42
【问题描述】:

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

【问题讨论】:

  • 你的问题解决了吗
  • @logan 是的。 jsfiddle.net/stN8U/1这解决了我的问题谢谢。
  • 如果提供的答案有帮助,请接受更适合您的答案。

标签: javascript jquery html opencart cpanel


【解决方案1】:

在调用 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

EDIT - 尝试使用 jQuery,如下所示 --

从输入字段中删除 onchange :

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

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

【讨论】:

  • jsfiddle.net/M3kj6/1jsfiddle.net/stN8U/1 都适合我。谢谢你。还有关于如何更改图像颜色的任何建议,只有 flash 或 photoshop 是这个选项,或者还有其他选项吗??
  • 是的,这将起作用,最终您将更改事件绑定到文件输入和调用函数(完成其余任务)。我在回答中提到了同样的事情,但将所有代码放在绑定函数中而不是单独的 javascrpt 函数中。
【解决方案2】:

简单的解决方案。没有 Jquery

<img id="output" src="" width="100" height="100">

<input name="photo" type="file" accept="image/*" onchange="document.getElementById('output').src = window.URL.createObjectURL(this.files[0])">

【讨论】:

  • 在某些情况下,图像不会立即更新。如果我向事件onchange 添加更多代码,它可能会在图像的前一个副本上运行。有没有办法等待图片上传?
【解决方案3】:

在您的 HTML 中:&lt;input type="file" id="yourFile"&gt; 不要忘记引用您的 js 文件或将以下脚本放在 &lt;script&gt;&lt;/script&gt; 之间 在你的脚本中:

var fileToRead = document.getElementById("yourFile");

fileToRead.addEventListener("change", function(event) {
    var files = fileToRead.files;
    if (files.length) {
        console.log("Filename: " + files[0].name);
        console.log("Type: " + files[0].type);
        console.log("Size: " + files[0].size + " bytes");
    }

}, false);

【讨论】:

    【解决方案4】:

    尝试使用此代码,您将在上传时获得图像预览

    <input type='file' id="upload" onChange="readURL(this);"/>
    <img id="img" src="#" alt="your image" />
    
     function readURL(input){
     var ext = input.files[0]['name'].substring(input.files[0]['name'].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');
    }
    }
    

    【讨论】:

    • 这个答案和the main answer一样,基本上是从解决方案提供商那里偷来的。不酷imo。
    【解决方案5】:
    Below solution tested and its working, hope it will support in your project.
    HTML code:
        <input type="file" name="asgnmnt_file" id="asgnmnt_file" class="span8" 
        style="display:none;" onchange="fileSelected(this)">
        <br><br>
        <img id="asgnmnt_file_img" src="uploads/assignments/abc.jpg" width="150" height="150" 
        onclick="passFileUrl()" style="cursor:pointer;">
    
    JavaScript code:
        function passFileUrl(){
        document.getElementById('asgnmnt_file').click();
        }
    
        function fileSelected(inputData){
        document.getElementById('asgnmnt_file_img').src = window.URL.createObjectURL(inputData.files[0])
        }
    

    【讨论】:

      猜你喜欢
      • 2019-06-30
      • 2017-10-16
      • 2019-07-14
      • 2016-02-13
      • 2013-03-29
      • 2013-05-23
      • 1970-01-01
      • 2013-04-26
      相关资源
      最近更新 更多