通过javascript获取图像大小

时间:2012-11-18 20:48:52

标签: javascript jquery html5

为什么选择图像两次二阶图像的尺寸未显示?

我的完整代码: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)">​

4 个答案:

答案 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