为什么选择图像两次二阶图像的尺寸未显示?
我的完整代码:http://jsfiddle.net/ayxZM/
<script type="text/javascript">
function handleFiles(files) {
for (var i = 0; i < files.length; i++)
{
alert(files[i].size + " Bytes");
}
}
</script>
<input type="file" onchange="handleFiles(this.files)">
答案 0 :(得分:1)
如果您选择相同的图像两次,则图像选择并未真正更改,因此不会触发onchange
处理程序。如果您选择不同的图像,则会显示其大小。
答案 1 :(得分:0)
因为当您第二次单击同一图像时,文件没有变化,因此onchange
事件不会被触发,因此函数handleFiles
不会被调用,所以尺寸不显示。在这种情况下使用其他事件。也许你可以在handleFiles
函数中重置输入文件。这样,即使用户再次选择同一图像,也会将其视为新图像,因此onchange
事件将被触发。
答案 2 :(得分:0)
像这样重置你的字段。我测试了它。它运作得很好。
<script type="text/javascript">
function handleFiles(files) {
for (var i = 0; i < files.length; i++)
{
alert(files[i].size + ' Bytes' );
reset_field('handleFilesfield');
}
}
function reset_field(id) {
$('#'+id).html($('#'+id).html());
}
</script>
<form>
<span id="handleFilesfield"><input type="file" onchange="handleFiles(this.files)"/></span>
</form>
答案 3 :(得分:0)
如前所述:当您选择相同的图像时,onchange
不会触发(=不更改值 - 请参阅?有意义)。但是,如果您想在每次尝试重置onchange
事件中的值时触发onmousedown
。这样,该值仍然可以提交,并强制onchange
触发。演示:http://jsfiddle.net/LeZuse/ayxZM/27/
注意:如果您需要它与触摸兼容,您可能也想使用ontouchstart
。