+ -
当前位置:首页 → 问答吧 → 转载一个仿163邮件中发送多附件的功能

转载一个仿163邮件中发送多附件的功能

时间:2008-02-26

来源:互联网

转载一个仿163邮件中发送多附件的功能JS代码:
这几天正用这个功能.

在线演示:http://php.115000.com.cn/pliuy/user/editor.php?type=3


代码如下:

复制下面代码保存为:upload.js
复制内容到剪贴板
代码:

var currFocus;
var ExistAttaInfo = new Array();
var oldDelAttas = new Array();
var attaIdx = 0;
var IsIE;
function fInitMSIE(){
if (navigator.userAgent.indexOf("MSIE") != -1){
IsIE = true;
}else{
IsIE = false;
}
}
fInitMSIE();



function fTrim(str){
str = str.replace(/(^\s*)/,"");
str = str.replace(/(\s*$)/,"");
return str;
}

//本js文件用于compose.htm同时发送多个附件的js函数,支持 IE 和 NNx 系列。
//所有的函数都适用于 IE 和 NNx 系列,直接调用就可以
//函数里面会根据语句判断浏览器类型,然后依据不同的bowser属性增加元素
//主要功能是动态创建 各种表单元素 和 删除表单元素
//written by xpr

// function list
// -------------------------------------------------------------------------------------------------------------------
// IsIEBrowser() 返回值: true(IE) false(NNx)
// exist(fileId) 判断fileId是否已经存在
// addInputFile(spanId,fileId) 在名为spanId 的元素里面增加序号为index的input file
// addbr(spanId,brId) 在名为spanId 的元素里面增加id为brId的换行符
// adddel(spanId,index) 在名为spanId 的元素里面增加序号为index的"删除"按钮,他可以删除相应的input file 和 br
// addhidden(spanId,hiddenId,value) 在名为spanId 的元素里面增加id为hiddenId,值为value的input type=hidden
// -------------------------------------------------------------------------------------------------------------------

var IsIE;
var attaIdx = 0;

//search,全局变量
//-----------------------------------------------------------------------------------------------------------
function IsIEBrowser() {
if (navigator.userAgent.indexOf("MSIE") != -1) {
return true;
} else {
return false;
}
}

// 增加附件函数 (),增加到 idfilespan,基数为 attaIdx 。

function add() {

addfile("idfilespan",attaIdx);
attaIdx++;
return false;
}

//----------------------------------------fileexist()----------------------------------------------------------
//edited by alun
function exist(fileId) {
var file = document.getElementById(fileId);
var result = false;
if ( file !=null ) {
if ( file.value != null && file.value != "") {
result = existFile( file);

}//if
}
if( result)
{
alert("这个附件您已经添加过了,新添加的附件将已被删除");
//document.sendmail."+fileId+".value=""";
var attach_num = fileId.substring(10,12);

delfile("idfilespan",attach_num);

//--attaIdx;
//document.getElementById( "idAttachOper"+ attaIdx).click();
}
}//end of function
//added by alun
function getfilename( attaName ) {
var s = attaName.lastIndexOf( '\\' );
return attaName.substr(s+1, attaName.length - s -1);
}
//added by alun
function existFile( file)
{
var form = document.myform;
for ( var i= 0 ; i < form.elements.length ; i ++ ) {
if ( form.elements.type == "file" && form.elements.name != file.name ) {
if ( file.value == form.elements.value ) {
//alert(form.elements.value=null);
return true;
}
}
}//for
for (var i=0; i<EXISTATTAINFO.LENGTH; {
var theName = ExistAttaInfo;
if ( theName != null && theName != "" && theName == getfilename(file.name) ) {
return true;
}
}
return false;
}
//----------------------------------------addfile(spanId,index)----------------------------------------------
function addfile(spanId,index)
{
var strIndex = "" + index;

var fileId = "attachfile"+ strIndex;
var brId = "idAttachBr" + strIndex;
addInputFile(spanId,fileId);

adddel(spanId,index);

addbr(spanId,brId);
//document.getElementById( "attachfile"+ strIndex).click();
return;
}
//-------------------------------------------sub fuction addInputFile-----------------------------------------
function addInputFile(spanId,fileId)
{
var span = document.getElementById(spanId);
if ( span !=null ) {
if ( !IsIE ) {
var fileObj = document.createElement("input");
if ( fileObj != null ) {
fileObj.type="file";
fileObj.name = fileId;
fileObj.id = fileId;
fileObj.size="50";
var clickEvent = "exist('" + fileId + "')";
fileObj.setAttribute("onclick",clickEvent,0);
span.appendChild(fileObj);
}//if fileObj
}// !IsIE

if ( IsIE ) {
//var fileTag = "var fileTag = "var fileObj = document.createElement(fileTag);
span.appendChild(fileObj);
}//IsIE if

}//if span
}

function addbr(spanId,brId)
{
var span = document.getElementById(spanId);
if ( span !=null ) {
var brObj = document.createElement("br");
if ( brObj !=null ) {
brObj.name = brId;
brObj.id = brId;
span.appendChild(brObj);
}//i2f
}//if
return;
}

function adddel(spanId,index)
{
var strIndex = "" + index;
var delId = "idAttachOper" + strIndex;
var span = document.getElementById(spanId);
if ( span != null ) {
var oTextNode = document.createElement("SPAN");
oTextNode.style.width = "5px";
span.appendChild(oTextNode);
if ( IsIE ) {
var tag = "";
var delObj = document.createElement(tag);
if ( delObj != null ) {
span.appendChild(delObj);
}//if

}// Is IE

if ( !IsIE ) {
var delObj = document.createElement("input");
if ( delObj != null ) {
delObj.name = delId;
delObj.id = delId;
delObj.type = "button";
var clickEvent = "return delfile('" + spanId + "',"+strIndex+");";
delObj.setAttribute("onclick",clickEvent);
span.appendChild(delObj);
}//if
}// !IsIE if
if( delObj != null) delObj.value = "删 除";
}//main if
return;
}


//-------------------------------------------------------------------------------------------------------------


//---------------------------------------------delete input file-----------------------------------------------
function delfile(spanId,index)
{
var strIndex = "" + index;
var fileId = "attachfile"+ strIndex;
var brId = "idAttachBr" + strIndex;
var delId = "idAttachOper" + strIndex;
//first,get the element
var span = document.getElementById(spanId);
//alert( "del span: " + span );
if ( span == null ) return false;

var fileObj = document.getElementById(fileId);
if ( fileObj == null ) return false;

var brObj = document.getElementById(brId);
if ( brObj ==null ) return false;

var delObj = document.getElementById(delId );
//alert( "del delId: " + delObj );
if ( delObj == null ) return false;

//second,create the replace element
var temp= document.createElement("SPAN");
//third,replace it
span.replaceChild(temp,fileObj);
span.replaceChild(temp,brObj);
// Added by Harry, Repair Remove attached bug 2005/04/04
span.removeChild(delObj.previousSibling);
var attach = document.getElementById("attach");
if(span.getElementsByTagName("INPUT").length == 1) attach.childNodes[0].nodeValue='添加附件';
// End
span.replaceChild(temp,delObj);

return false;
}
使用:
<A id=attach    href="javascript:;" name=attach>添加附件</A>
<br>
<SPAN  id=idfilespan></SPAN>
接收页代码:
[php]
         $attachfilearr = $_FILES['attachfile']['name'];

            foreach($attachfilearr as $id => $value) {
             echo $attachfilearr[$id];
             echo '<br>';
      }

[/ph

[ 本帖最后由 adleyliu 于 2008-2-26 15:59 编辑 ]

作者: adleyliu   发布时间: 2008-02-26

收藏了

作者: ct_174880859   发布时间: 2008-02-26

作者: luzhou   发布时间: 2008-02-26

<script type="text/javascript">
<!--
        function addfile(){
                var tmp_files = document.getElementById("no").value.split('^');
                var thisno = parseInt(tmp_files[tmp_files.length-1])+1;
                document.getElementById("no").value +='^'+thisno;
                var new_file = document.createElement("div");
                document.getElementById("files").appendChild(new_file);
                new_file.id='f_'+thisno;
                new_file.innerHTML = "<input type='file' name='data[]' /><input type='button'value='Delete file'onclick='delfile("+thisno+");'>";
        }
        function delfile(f_no){
                document.getElementById('f_'+f_no).innerHTML =' ';
                document.getElementById('f_'+f_no).style.display ='none';
        }
//-->
</script>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" id="no"value='1' />
<div id='files'>
<input type="file" name="data[]" />
</div>
<input type="submit" value="上传" /><input type='button'value='Add file'onclick='addfile();'>
</form>

修改了一下适应IE中删除时还显示DIV的问题.

[ 本帖最后由 hiler 于 2008-4-29 10:15 编辑 ]

作者: hiler   发布时间: 2008-02-27

回复楼上:

有个问题,比如添加5个,然后删除第2,第3个,第5个,之后再添加几个你看一下效果.
xxxx.jpg (23.69 KB)
2008-4-29 09:53


[ 本帖最后由 adleyliu 于 2008-4-29 09:53 编辑 ]

作者: adleyliu   发布时间: 2008-04-29

支持楼主

作者: weifenghuan   发布时间: 2008-04-29

引用:
原帖由 adleyliu 于 2008-4-29 09:48 发表
回复楼上:

有个问题,比如添加5个,然后删除第2,第3个,第5个,之后再添加几个你看一下效果.
20162
呵呵,IE与FF效果不同,在FF下正常
加了一条设置DIV 显示为none的代码,测试正常.

[ 本帖最后由 hiler 于 2008-4-29 10:16 编辑 ]

作者: hiler   发布时间: 2008-04-29

支持一下

作者: z123456   发布时间: 2008-04-29

热门下载

更多