首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

共享-完美的多附件上传效果。该怎么解决

2012-02-17 
共享-----完美的多附件上传效果。一下的代码是51js上找的一段代码结合patchclass(黑翼)提供的163上的效果实

共享-----完美的多附件上传效果。
一下的代码是51js上找的一段代码

结合     patchclass(黑翼)     提供的163上的效果实现的。

供大家研究。


<html>

<head>

<style>
a.addfile   {
background-image:url(http://p.mail.163.com/js31style/lib/0703131650/163blue/f1.gif);
background-repeat:no-repeat;
background-position:-823px   -17px;
display:block;
float:left;
height:20px;
margin-top:-1px;
position:relative;
text-decoration:none;
top:0pt;
width:80px;
}

input.addfile   {
/*left:-18px;*/
}

input.addfile   {
cursor:pointer   !important;
height:18px;
left:-13px;
filter:alpha(opacity=0);  
position:absolute;
top:5px;
width:1px;
z-index:   -1;
}
</style>

<script   type= "text/javascript ">

function   MultiSelector(   list_target,   max   ){

//   Where   to   write   the   list
this.list_target   =   list_target;
//   How   many   elements?
this.count   =   0;
//   How   many   elements?
this.id   =   0;
//   Is   there   a   maximum?
if(   max   ){
this.max   =   max;
}   else   {
this.max   =   -1;
};

/**
  *   Add   a   new   file   input   element
  */
this.addElement   =   function(   element   ){

//   Make   sure   it 's   a   file   input   element
if(   element.tagName   ==   'INPUT '   &&   element.type   ==   'file '   ){

//   Element   name   --   what   number   am   I?
element.name   =   'file_ '   +   this.id++;

//   Add   reference   to   this   object
element.multi_selector   =   this;

//   What   to   do   when   a   file   is   selected
element.onchange   =   function(){

//   New   file   input
var   new_element   =   document.createElement(   'input '   );
new_element.type   =   'file ';
new_element.size   =   1;
new_element.className   =   "addfile ";

//   Add   new   element
this.parentNode.insertBefore(   new_element,   this   );

//   Apply   'update '   to   element
this.multi_selector.addElement(   new_element   );

//   Update   list
this.multi_selector.addListRow(   this   );

//   Hide   this:   we   can 't   use   display:none   because   Safari   doesn 't   like   it
this.style.position   =   'absolute ';
this.style.left   =   '-1000px ';

};


//   If   we 've   reached   maximum   number,   disable   input   element
if(   this.max   !=   -1   &&   this.count   > =   this.max   ){
element.disabled   =   true;
};

//   File   element   counter


this.count++;
//   Most   recent   element
this.current_element   =   element;

}   else   {
//   This   can   only   be   applied   to   file   input   elements!
alert(   'Error:   not   a   file   input   element '   );
};

};


/**
  *   Add   a   new   row   to   the   list   of   files
  */
this.addListRow   =   function(   element   ){

//   Row   div
var   new_row   =   document.createElement(   'div '   );


//   Delete   button
var   new_row_button   =   document.createElement(   'input '   );
new_row_button.type   =   'button ';
new_row_button.value   =   'Delete ';


//   References
new_row.element   =   element;

//   Delete   function
new_row_button.onclick=   function(){

//   Remove   element   from   form
this.parentNode.element.parentNode.removeChild(   this.parentNode.element   );

//   Remove   this   row   from   the   list
this.parentNode.parentNode.removeChild(   this.parentNode   );

//   Decrement   counter
this.parentNode.element.multi_selector.count--;

//   Re-enable   input   element   (if   it 's   disabled)
this.parentNode.element.multi_selector.current_element.disabled   =   false;

//   Appease   Safari
//         without   it   Safari   wants   to   reload   the   browser   window
//         which   nixes   your   already   queued   uploads
return   false;
};

//   Set   row   value
new_row.innerHTML   =   element.value;


//   Add   button
new_row.appendChild(   new_row_button   );

//   Add   it   to   the   list
this.list_target.appendChild(   new_row   );

};

};
</script>
</head>

<body>

<!--   This   is   the   form   -->
<form   enctype= "multipart/form-data "   action= "your_script_here.script "   method   =   "post ">
<!--   The   file   element   --   NOTE:   it   has   an   ID   -->
<a   href=#?   class= "addfile ">
<input   id= "my_file_element "   class= "addfile "   type= "file "   name= "file_1 "   size= "1 ">
</a>
<input   type= "submit "   value=上传>
</form>

Files:
<!--   This   is   where   the   output   will   appear   -->
<div   id= "files_list "   style= "padding:5px;border:1px;border-style:solid;border-color:#0000ff;height:100px;width:600px; "> </div>
<script>
<!--   Create   an   instance   of   the   multiSelector   class,   pass   it   the   output   target   and   the   max   number   of   files   -->


var   multi_selector   =   new   MultiSelector(   document.getElementById(   'files_list '   ),   100   );
<!--   Pass   in   the   file   element   -->
multi_selector.addElement(   document.getElementById(   'my_file_element '   )   );
</script>

</body>
</html>

[解决办法]
mark
[解决办法]
mark
[解决办法]
mark

[解决办法]
支持下楼主
[解决办法]
mark
[解决办法]
接分来的...
[解决办法]
<script language= "javascript ">

var vmFile
//动态文件记数器
var num=0;

var maxNum = 3;
var filename=new Array();

function file_onchange() {


function file_onchange() {
if(checkFileNum()){
alert( "最大上传文件数为 "+maxNum);
return ;
}
//先+file控件
addFile();
}

//获取层内容
function setdiv(){
var obj=document.getElementById( "showFile ");
var returnStr= " ";
for(var i=0;i <filename.length;i++){

alert( "filenames=== "+filename[i]);
var addStr=filename[i]+ " <a href= 'javascript:DelFile( "+i+ ") '> <img src= 'image/attach.gif ' alt= '删除 ' /> </a> "+ "; ";
returnStr=returnStr+addStr ;
}
obj.innerHTML=returnStr;
}

//增加file控件
function addFile(){

vmFile = document.getElementById( "mFileLink ");

var eF
objStr = "input "
eF=document.createElement(objStr)
eF.className = "addfile "
eF.type= "file "
eF.name= "uploadFiles "+num
eF.size =1
eF.onchange = file_onchange;
vmFile.appendChild(eF) ;
num++;


var mName = new Array();

alert( "vmFile.childNodes.length= "+vmFile.childNodes.length);

var tempVar = vmFile.childNodes[vmFile.childNodes.length-2].value;
alert( "tempVar= "+tempVar);


if ( tempVar != " " ) {
mName=tempVar.split( "\\ ");
}
var currFile =mName[mName.length-1];

alert( "currFile= "+currFile);
//检查是否同名
if(checkAgainFile(currFile)){
vmFile.removeChild(eF);
num--;
alert( "vmFile.childNodes.length= "+vmFile.childNodes.length);
alert( "已经选择了该文件! ");
return;
}else{
alert( "num= "+num);
filename[num-1] = currFile;
}
setdiv();
}

//减去file控件
function DelFile(delnum ){

vmFile = document.getElementById( "mFileLink ");
alert( "bfore vmFile.childNodes.length= "+vmFile.childNodes.length);
vmFile.removeChild(vmFile.childNodes(delnum));
alert( "after vmFile.childNodes.length= "+vmFile.childNodes.length);
num--;
//删除数组文件名
filename.splice( delnum, 1 );


setdiv();
}

function checkAgainFile(infilename ){
var flag =false;
for(var i=0;i <filename.length;i++){
if(filename[i]==infilename)flag = true;
}
return flag;

}

function checkFileNum(){
var flag =false;
if(filename.length> =maxNum ){
flag = true;
}

return flag;
}
</script>
改了下,这次是改对了
[解决办法]
楼主的这个不错,不过如果再加上同名文件验证就比较完善了
[解决办法]
mark
[解决办法]
这近也在做这个,就差一点点可以到163的样子了,先看看LZ的啦,接分呀,希望可以一起讨论讨论

热点排行