无限增加附件文本框!

原创 2007年09月22日 17:11:00
 

HTML Tags and JavaScript tutorial



无限增加附件文本框!





<!--
<form name="formSave" action="" method="post" enctype="multipart/form-data">    //表单名称与attach.js里的一致
<input type="text" name="num">    //返回添加的控件名称
</form>
<form name=sendmail>    //表单名称与attach.js里的一致
<SCRIPT src="attach.js"></SCRIPT>
<A id=attach  onclick="add();this.childNodes[0].nodeValue='继续添加附件';"  href="javascript:;" name=attach>添加附件</A><SPAN  id=idfilespan></SPAN>
</form>
-->
attach.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.sendmail;
 for ( var i= 0 ; i < form.elements.length ; i ++ ) {       
  if ( form.elements[i].type == "file" && form.elements[i].name != file.name ) {
   if ( file.value == form.elements[i].value ) {
    //alert(form.elements[i].value=null);
    return true;
   }
  }
 }//for
 for (var i=0; i<ExistAttaInfo.length; i++) {
  var theName = ExistAttaInfo[i];
  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 = "<input type='file'  id ='" + fileId + "' style='BORDER-RIGHT: #000000 1px solid; background-color: #FFFFFF; BORDER-TOP: #000000 1px solid; OVERFLOW: no; vertical-align: top;  BORDER-LEFT: #000000 1px solid; WIDTH: 90%; BORDER-BOTTOM: #000000 1px solid; HEIGHT: 20' size=50 name='" + fileId + "' size=50 onchange=exist('" + fileId + "')>";
      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);
            }
     }
  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 = "<input type='submit' style='BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; OVERFLOW: no; BORDER-LEFT: #000000 1px solid;  BORDER-BOTTOM: #000000 1px solid; HEIGHT: 20' size=70 value='$subject'  id='" + delId + "' onclick=delfile('" + spanId + "',"+strIndex+")></input>";
   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;
}
 


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ExtJs 文本框后附件单位

  • 2012-01-06 16:40
  • 32KB
  • 下载

增加附件上传功能

1.在KE.lang中加入accessory : '插入附件', 2.加入对附件格式的限制说明invalidAccessory : "请输入有效的URL地址。\n只允许doc,xls,pdf,txt...

增加和减少文本框

  • 2016-01-14 13:03
  • 2.48MB
  • 下载

ajaxfileupload异步上传附件增加参数的方法

1.js文件(注意红色字体): // JavaScript Document jQuery.extend({ createUploadIframe: function(id, uri) {...

增加Bugzilla附件大小

Increase Bugzilla Attachment Size Using MySQL max_allowed_packetby Ramesh Natarajan on October 27, 2...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)