• 类似gmail添加附件


    想做一个管理后面,想用到gmail添加附件的功能到添加产品图,找了很多源码都不合适,找到了一段,但在FF下有问题。
    ++++++++++++++++

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <script type="text/javascript">
    /************************
    * author lijun
    * date 2007.5.25
    *
    * 无刷新上传
    * IE,Firefox下和Gmail类似的附件添加方式
    * 允许进一步扩展,实现附件添加后即自动上传得功能。
    * 2007.5.30修正了一个bug.
    ************************/
     
    /* 检测浏览器类型 */
      function isIE()
      {
                  if(document.attachEvent)
                  {
                          return true;
                  }
                  else
                  {
                          return false;
                  }
      }
     
    /*firefox下的附件添加提示*/
      function getFirefoxTip(form)
      {
                  var str="添加一个附件";
                  var cssStr="100px;font:12px Arial;color:#00f;text-decoration:underline";
                  var tipDiv=document.createElement("div");
                  tipDiv.style.cssText=cssStr;
                  tipDiv.innerHTML=str;
                  tipDiv.onclick=function()
                  {
                          var i=form.getAttribute("count")?form.getAttribute("count"):0;
                          createFirefoxInput(form,parseInt(i)+1);
                  };
                  return tipDiv;
      } 
     
    /*删除已经添加的附件项*/
      function removeChild(parent,child,tip)
      {
                     
                  var i=parent.getAttribute("count");
                  if(isIE())
                  {
                          var id=parseInt(child.getAttribute("id"));
                          parent.removeChild(child);
                          parent.removeChild(tip);
                          i--;
                                                  /*
                          var tipAry=new Array();
                          var inputAry=new Array();
                          for(j=0;j <parent.childNodes.length;j++)
                          {
                                  var node=parent.childNodes[j];
                                  if(node.nodeType==1)
                                  {
                                          if(node.getAttribute("idi"))
                                          {
                                                  inputAry.push(node);
                                          }
                                          else if(node.getAttribute("idt"))
                                          {
                                                  tipAry.push(node);
                                          }
                                  }
                          }
                          for(j=0;j <tipAry.length;j++)
                          {
                                  var position=getPosition(tipAry[j]);
                                  inputAry[j].style.top=position.top+"px";
                                  inputAry[j].style.left=position.left+"px";
                          }
                                                  */
                                                  var tipAry=rePlaceInput(parent);
                          if(i==0)
                          {
                                  tipAry[i].innerHTML="添加一个附件";
                          }
                  }
                  else
                  {
                          parent.removeChild(child);
                          i--;
                          if(i==0)
                          {
                                  tip.innerHTML="添加一个附件";
                          }
                  }
             
                  parent.setAttribute("count",i);
                     
      }
     
      /* 添加移除项 */
      function getRemove(form,node,tip)
      {
                  var text="移除";
                  var span=document.createElement("span");
                  span.style.cssText="font:10px Arial;color:#00f;text-decoration:underline;";
              span.innerHTML=text;
                  span.onclick=function(){removeChild(form,node,tip);}
                  return span;
      }
     
      /* firefox下的文件选择框 */
      function createFirefoxInput(form,inputIndex)
      {
                  var i=inputIndex?inputIndex:0;
                  var tip=i==0?getFirefoxTip(form):form.lastChild;
                  if(i==0)
                  {
                          form.appendChild(tip);
                  }
                  else
                  {
                          var inputDiv=document.createElement("div");
                          var input=document.createElement("input");
                          input.setAttribute("type","file");
                          input.setAttribute("name","file_"+i);
                          input.onchange=function(){
                                     
                          }
                          inputDiv.appendChild(input);
                          inputDiv.appendChild(getRemove(form,inputDiv,tip));
                          form.insertBefore(inputDiv,tip);
                          form.setAttribute("count",i);
                          tip.innerHTML="再添加一个附件";
                  }
                     
          }
     
      /* firefox下的初始化函数 */
      function initFirefox()
      {
                  var form=document.forms['uploadForm'];
                  createFirefoxInput(form);
      }
     
      /* 获取指定元素在页面的位置 */
          function getPosition(obj)
          {
                  var top=0,left=0;
                  while(obj.offsetParent)
                  {
                          top+=obj.offsetTop;
                          left+=obj.offsetLeft;
                          obj=obj.offsetParent;
                  }
                  return {top:top,left:left};
          }
     
          /* IE下的附件添加提示 */
          function getIeTip(form)
      {
                  var str=parseInt(form.getAttribute("count"))>=0?"再添加一个附件":"添加一个附件";
                  var cssStr="font:12px Arial;color:#00f;text-decoration:underline";
                  var tipDiv=document.createElement("div");
                  tipDiv.style.cssText=cssStr;
                  tipDiv.innerHTML=str;
                  return tipDiv;
      }
             
          /*IE下的文件按选择显示*/
          function updateIeInput(input,tip)
          {
                  var parent=input.parentNode;
                  parent.style.zIndex=-2;
                  tip.style.textDecoration="none";
                  tip.style.color="#000000";
                  tip.style.fontWeight="bold";
                  tip.innerHTML=input.value;
                  tip.appendChild(getRemove(input.form,parent,tip));
          }
     
          /*创建IE下的文件选择框*/
          function createIeInput(form,inputIndex)
      {
                  var i=inputIndex?inputIndex:0;
                  var tip=getIeTip(form);
                  tip.setAttribute("idt",i)
                  form.appendChild(tip);
                  var inputDiv=document.createElement("div");
                  var input=document.createElement("input");
                  input.setAttribute("type","file");
                  input.setAttribute("name","file_"+i);
                  input.style.cssText="0";
                  input.onchange=function(){
                                  createIeInput(this.form,parseInt(this.form.getAttribute("count"))+1);
                                  updateIeInput(this,tip);
                                                                  rePlaceInput(this.form);
                  }
                  inputDiv.appendChild(input);
                  inputDiv.setAttribute("idi",i);
                  var position=getPosition(tip);
                  inputDiv.style.cssText="position:absolute;top:"+position.top+"px;left:"+position.left+"px;filter:alpha(opacity=0);z-index:2";
                  form.appendChild(inputDiv);
                  form.setAttribute("count",i);
                     
          }
     
    /* 重新置位*/
    function rePlaceInput(parent)
    {
            var tipAry=new Array();
        var inputAry=new Array();
        for(j=0;j <parent.childNodes.length;j++)
        {
          var node=parent.childNodes[j];
          if(node.nodeType==1)
          {
              if(node.getAttribute("idi"))
              {
                  inputAry.push(node);
              }
              else if(node.getAttribute("idt"))
              {
                  tipAry.push(node);
              }
            }
          }
          for(j=0;j <tipAry.length;j++)
          {
              var position=getPosition(tipAry[j]);
              inputAry[j].style.top=position.top+"px";
              inputAry[j].style.left=position.left+"px";
          }
            return tipAry;
    }
     
          /*初始化IE*/
      function initIE()
      {
                  var form=document.forms["uploadForm"];
                  createIeInput(form);
                                  window.onresize=function(){
                                    rePlaceInput(form);
                                  }
      }
       
      /* 初始化 */
      function init()
      {
                  if(isIE())
                  {
                          initIE();
                  }
                  else
                  {
                          initFirefox();
                  }
      }
    </script>
    </HEAD>
     
    <BODY onload="init()">
    <form name="uploadForm" action="/upload.do" target="upload" enctype="multipart/form-data" method="post">
    </form>
    <iframe name="upload" style="display:none"> </iframe>
    </BODY> </HTML>





    先给你段仿126的。。。
    JScript code
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>测试附件</title> <style type="text/css"> /*附件 开始*/ a.files, span.del_file { overflow:hidden; display:-moz-inline-box; display:inline-block; background:url(F2.gif); } a.files { 50px; height:15px; #vertical-align:middle; } a.files:hover { background-position:0 -24px; } a.files input { margin-left:-160px; filter:alpha(opacity=0); opacity:0; } span.del_file { 7px; height:7px; background-position:0 -51px; vertical-align:middle; #vertical-align:sub; margin-left:2px; cursor:pointer; } /*附件 结束*/ </style> <script type="text/javascript"> var File = { /* 模拟126的附件添加特效 ------------------------------------------------------- **num 为元素的下标 **count 为元素的个数 **name 为元素的名字和ID的前段(元素的实际名称是前段加下标) **status 为状态的ID **form 为表单的ID ------------------------------------------------------- */ num : 1, count : 0 , name : 'file', status : 'file', form : 'form' , urls : {} , add : function (file) { //添加附件 if (this.urls[file.value]) { alert('此文件已存在'); return false; } var a = file.parentNode, status = document.getElementById(this.status); this.urls[file.value] = 1; document.getElementById(this.form).appendChild(file); if (/Firefox/.test(window.navigator.userAgent)) { //中转一下,否则FF里有很NB的错误会出现。。。 var b = a, a = a.cloneNode(true); b.parentNode.replaceChild(a, b); b = null; } file.style.display = 'none'; a.innerHTML = '<input id="' + this.name + (this.num + 1) + '" name="' + this.name + (this.num + 1) + '" onchange="File.add(this)" type="file" \/>'; status.innerHTML += ' <span>' + (/[^\\]+$/.exec(file.value)||'') + '<span class="del_file" onclick="File.del(this, ' + this.num + ')"><\/span>;<\/span>' this.count ++, this.num ++, a = file= null; } , del : function (span, num) { //删除附件 var file = document.getElementById(this.name + num); delete this.urls[file.value]; document.getElementById(this.form).removeChild(file); span.parentNode.parentNode.removeChild(span.parentNode); this.count --, span = num = null; } }; </script> </head> <body> <a href="javascript:void(0);" class="files"><input id="file1" name="file1" onchange="File.add(this)" type="file" /></a> <div id="file"></div> <hr /> <form id="form" action="b.asp" method="post" enctype="multipart/form-data"> <input type="submit" value="提交" /> </form> </body> </html>









    http://www.cntuw.com//attachment/week_0825/161_12090514_3c2aad3ea894112.gif
    这个是那张图片的地址。。
    就是F2.gif

  • 相关阅读:
    pyspider 在ubuntu上安装失败怎么搞?
    怎么在项目中使用前端包管理器bower和构建工具gulp
    Asp.net mvc 实时生成缩率图到硬盘
    如果转载优酷、土豆视频等,怎么让视频自适应宽度?
    C语言II博客作业04
    C语言I博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    The first essay
  • 原文地址:https://www.cnblogs.com/zfq308/p/1349531.html
Copyright © 2020-2023  润新知