大致如下:
<script language="JavaScript">
var AllowImgWidth=150;
var AllowImgHeight=100;
function load(Obj){
var tempImg=new Image();
//check file type
tempImg.onerror=function(){alert('fxxku');};
//file type checked
//check img size
tempImg.onreadystatechange=function(){if(AllowImgWidth!=0&&AllowImgWidth<this.width||AllowImgHeight!=0&&AllowImgHeight<this.height){alert('sobig');}
else{document.getElementById('preview').innerHTML="<img src="+tempImg.src+">";}};
//img size checked
tempImg.src=Obj.value;
}
</script>
<form>
<input type="file" name="UpFile" size="128" contentEditable="false" onpropertychange="javascript:load(this);">
<div id="preview"></div>
</form>
问题:当选择了一个合法的文件之后,再次点击“浏览”选择一个大尺寸的图片文件,Obj.value会改变。
请高手不吝指教,20分作谢。

解决方案 »

  1.   

    就是先选择一张图片,并且尺寸是合法的,此时,INPUT里面的VALUE是这个图片A的本地路径;
    然后,再次点击“浏览”,选择另外一张超大的图片B,触发了alert( 'sobig ');之后,图片B的路径会覆盖掉图片A的路径,这个是一个未解决的BUG,请高手指教。
      

  2.   

    我的理解是你要在选择图片B之后,因为B不满足条件,所以想让<img>标签中的src不便。
    如果是这样的话,可以通过以下方法:
        加一个标识性的变量 flag,默认值为0,如果图片的尺寸不符合条件,你在alert之后,把这个flat=1,然后在设置innerHTML之前先判断一下
    flag的值,如果是0的话则设置innerHTML,如果是1的话就不要设置就好了。
    不知道这样能不能满足你的需求,如果我理解的不对,你指出来