onchange 事件不起作用。我应该做什么才能在同一页面上获得结果。我不想重定向到任何其他页面来上传图像。这个问题是因为opencart吗?不知道cpanel中这样写是否正确。我正在使用 opencart 和 cpanel。还有其他办法吗?
HTML
<input type='file' id="upload" onchange="readURL(this.value)" />
<img id="img" src="#" alt="your image" />
script
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 http://jsfiddle.net/Junkie/stN8U/
您需要发送this
仅对象而不是this.value
调用 onchange 时
<input type='file' id="upload" onchange="readURL(this)" />
因为你正在使用input
变量为this
在你的函数中,就像在 line 中
var url = input.value;// reading value property of input element
工作演示 http://jsfiddle.net/stN8U/2/
EDIT- 尝试使用 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 演示 http://jsfiddle.net/stN8U/3/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)