在WEB上傳文件時,要用到上傳框:
<input type="file" id="f" name="f">
這東東在IE(其他偶沒經過測試)中是一個非常特殊的對象。
如果是您手動寫入的或其他對象經過某些事件觸發填入的值
由于安全問題,在進行提交表單時,往往會被清空,所以上傳失敗。
簡單點說,除非你的鼠標親自點到了上傳框f上,IE才會給你上傳文件!
哪怕你將 f 的onclick句柄賦給某個對象,如:
<input type="file" id="f" name="f">
<input onclick="f.click()" value="點擊">
你 “點擊” 后,同樣會彈出文件選擇對話框,可惜失望地:你照樣不能上傳文件!
怎么辦呢?
看下這段:
<BODY onmousemove="f.style.pixelLeft=event.x-200;f.style.pixelTop=event.y-10;">
<input type="text"><input type="button" onmousemove="">
<input type="file" id="f" name="f" style="position:absolute;">
</BODY>
隨便點擊鼠標,看到效果了吧?
基于上面的思路,偶們就可以把它弄到一個button下面就OK了!!
<style>
input{border:1px solid green;}
</style>
<BODY>
<BR><BR><BR>
<form method="post" action="" enctype="multipart/form-data">
<input type="text" id="txt" name="txt">
<input type="button" onmousemove="f.style.pixelLeft=event.x-60;f.style.pixelTop=this.offsetTop;" value="請選擇文件" size="30">
<input type="file" id="f" name="f" style="position:absolute;" size="1" onChange="txt.value=this.value"><BR>
<INPUT TYPE="submit">
</form>
</BODY>
為了達到真正模擬的效果,還得要把f給隱藏,加個不透明的alpha 濾鏡即可,再加上 hidefocus 屬性,隱藏f的虛線:
<style>
input{border:1px solid green;}
</style>
<BODY>
<BR><BR><BR>
<form method="post" action="" enctype="multipart/form-data">
<input type="text" id="txt" name="txt">
<input type="button" onmousemove="f.style.pixelLeft=event.x-60;f.style.pixelTop=this.offsetTop;" value="請選擇文件" size="30" onclick="f.click()">
<input type="file" id="f" onchange="txt.value=this.value" name="f" style="position:absolute;filter:alpha(opacity=0);" size="1" hidefocus><BR>
<INPUT TYPE="submit">
</form>
</BODY>
可以看下opacity=0改為稍大些的效果。
OK了,現在你就可以控制它們的樣式、位置了。。。