2012-11-18 97 views

回答

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> 
+0

如果值需要保留以便可以提交,该怎么办? – nnnnnn

+0

那么就把它保存在handleFiles里面的某个地方吧。您甚至可以将其分配给页面中的其他表单字段,以便您可以保留它。至少,您的价值将不会与您的文件输入相关联。 – barakadam

1

如果选择两次相同图像,然后将图像选择并没有什么变化,所以onchange处理程序不激发。如果您选择不同的图片,则会显示其大小。

+1

我选择了两次相同的图像,我该怎么办? –

+0

为什么你需要做任何事情?您已经在第一次使用该图片的详细信息时完成了一些操作... – nnnnnn

0

因为当你点击同一张图片时,第二次没有文件变化,所以onchange事件没有被触发,所以函数handleFiles没有被调用,所以大小没有得到显示。对这种情况使用另一个事件。也许你可以重置handleFiles函数中的输入文件。这样,即使用户再次选择了相同的图像,它也会被视为新图像,因此将触发事件。

+0

我尝试了,但不起作用。请参阅:http://jsfiddle.net/ayxZM/2/ –

0

如这里已经提到:onchange当您选择相同的图像不火(=不改变价值 - 看到这是有道理的?)。但是,如果您想每次尝试重新启动onchange事件,请尝试重置onmousedown事件中的值。这种方式值保持提交,并强制onchange发射。演示:http://jsfiddle.net/LeZuse/ayxZM/27/
注意:如果您需要触摸兼容,也可以使用ontouchstart