作者thinkact (奇想 天を动かす)
看板Ajax
标题[问题] javascript input file的onclick
时间Wed Mar 5 11:40:04 2008
我想做出类似gmail中可以一直增加附档的功能
目前的做法是用javascript做出新增,移除
再将input file的路径存在array里, 之後再处理上传的部分
但这个方法在firefox 2中可以正常运作,
按下input file的Browse...按钮後, 会先跳出选档案的视窗,
之後再执行onclick的addFile function,
所以可以抓到档案路径, 并存入array中
但在IE7及firefox 3 beta中,
按下按钮後, 会先执行onclick指定的function, 之後才跳出选档案的视窗
所以在addFile function执行时并无法取得档案路径
请问有没有办法解决这个问题?
(问题描述的有点乱, 附上程式码如下,
两个注解起来的alert可以用来检查file browser跟onclick function哪一个先做)
另外再问一下,
我在用跟gmail相同的方式, 也就是动态新增input file的textfield时,
原本已选好档案的input file里的路径会全部清掉,
请问这种情形应该要怎麽做, 才能做出gmail附档的效果?
谢谢
#javascript部分:
------------------------------------------------------------------------------
var nFile = 0;
var filePath = new Array();
function addFile() {
//alert("**addFile() START** nFile = " + nFile);
if(document.getElementById("file").value != "") {
nFile++;
filePath[nFile] = document.getElementById("file").value;
showFile();
}
//alert("**add File() END** nFile = " + nFile);
}
function removeFile(n) {
for(i = n; i<nFile; i++) { filePath[i] = filePath[i+1]; }
filePath[nFile--] = null;
showFile();
}
function showFile() {
var obj = document.getElementById("upload");
obj.innerHTML = "";
for(i = 1;i<=nFile; i++) {
obj.innerHTML += "[ " + i + " ] ";
obj.innerHTML += filePath[i];
obj.innerHTML += " <a href=\"javascript:removeFile("
+ i + ");\">remove</a>";
obj.innerHTML += "<br />";
}
obj.innerHTML += "<br />";
obj.innerHTML += "nFile: " + nFile;
}
------------------------------------------------------------------------------
#html部分:
------------------------------------------------------------------------------
<input id="file" onclick="addFile()" type="file" />
<br /><br />
<div id="upload"></div>
------------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.225.67.151
1F:推 blackbing:为什麽要存array?POST到server端就会取得了。 03/05 13:35
2F:→ blackbing:你只需要控制显示几个input file栏位而已。 03/05 13:36
3F:→ thinkact:因为我在新增input file栏位时, 原有的栏位内容会被清空 03/05 14:57
4F:→ thinkact:所以就先用存在阵列的方式传送file path 03/05 14:57
5F:推 blackbing:了解,那onclick改成onchange试试看吧! 03/05 22:00
6F:→ thinkact:可以了 谢谢~ 再问一下gmail的附档选档案要怎麽做比较好? 03/06 22:11