`
Virgo_S
  • 浏览: 1154020 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS仿网易多附件上传功能

    博客分类:
  • JS
阅读更多
html

<div nowrap id="filespan">             
    <input type="button" onclick="addFile()" value="添加附件" id="btnAdd" />     
    <div id="divMsg">尚未添加文件</div>
</div>


js

var isIE = (navigator.userAgent.indexOf("MSIE") != -1);
var fileIndex = 0;
var dic = new ActiveXObject("Scripting.Dictionary");

function addFile() {
    var obj;
    if (isIE) {
        obj = document.createElement("<input type=file id='hdnFile' onchange='getValue(this.value);' style='display:none' />");        
    } else {
         obj = document.createElement("input");
         obj.type = "file";
         obj.id="hdnFile";
         obj.setAttribute("style", "display:none;", 0);
         obj.setAttribute("onchange", "javascript:getValue(this.value);", 0);
    }
    document.getElementById("filespan").appendChild(obj);
    document.getElementById('hdnFile').click();  
    //addInputFile(spanId, fileId);
    document.getElementById('divMsg').style.display = (dic.Count > 0)?'none':'';        
}

function addInputFile(spanId, fileId, str) {
    var span = document.getElementById(spanId);
    if (span != null) {
        //检测存在性        
        //if (dic.Exists(fileId))
        if(valueExists(str))
        {
            alert("不能重复添加相同文件");
            return false;
        }
        var divObj = document.createElement("div"), fileObj, delObj;
        divObj.id = fileId;
        divObj.style.height='22';
        var imgObj, fileObj, delObj;
        if (isIE) {        
            imgObj = document.createElement("<img src='unknown.gif' />");
            fileObj = document.createElement("<input type=text readonly>");
            delObj = document.createElement("<img src='delfile.jpg' onclick=delInputFile('" + spanId + "','" + fileId + "')>");            
        } else {
            imgObj = document.createElement("img");
            imgObj.setAttribute("src", "unknown.gif", 0);
            fileObj = document.createElement("input");
            fileObj.type = "text";
            fileObj.setAttribute("readonly", "readonly", 0);
            //fileObj.setAttribute("onchange", "javascript:alert('');", 0);
            delObj = document.createElement("img");
            imgObj.setAttribute("src", "delfile.jpg", 0);
            //delObj.type = "button";
            delObj.setAttribute("onclick", "delInputFile('" + spanId + "','" + fileId + "')", 0);
        }
        fileObj.name = fileId;
        fileObj.size = "50";    
        fileObj.value = str;
        fileObj.className = "NoborderR";
        //delObj.value = "删除";        
        divObj.appendChild(imgObj);
        divObj.appendChild(document.createTextNode(" "));
        divObj.appendChild(fileObj);        
        divObj.appendChild(document.createTextNode(" "));        
        divObj.appendChild(delObj);
        span.appendChild(divObj);
        //数据字典记录
        dic.Add(fileId, str);        
    }
}

function delInputFile(spanId, fileId) {
    var span = document.getElementById(spanId);
    var divObj = document.getElementById(fileId);
    if (span != null && divObj != null) {
        span.removeChild(divObj);
        //从数据字典移除
        dic.Remove(fileId);
        document.getElementById('divMsg').style.display = (dic.Count > 0)?'none':'';
    }
}

function getValue(str)
{
    var spanId = "filespan";
    var fileId = "uploadfile" + (fileIndex++);
    addInputFile(spanId, fileId, str);
    document.getElementById(spanId).removeChild(document.getElementById('hdnFile'));
}

function valueExists(str)
{  
   a = (new VBArray(dic.Items())).toArray();   //获取条目。  
   for (i in a)                  //遍历该 dictionary。
   {
      if(a[i]==str)
        return true;
   }
   return false;
}
//-->
分享到:
评论

相关推荐

    JavaScript实现动态增加文件域.仿网易邮箱附件

    在JavaScript编程中,动态增加文件域是一个常见的需求,特别是在构建具有上传功能的Web应用时,如仿造网易邮箱附件的功能。这个过程涉及到DOM操作、事件监听以及文件API的使用。以下将详细介绍如何实现这一功能。 ...

    简单的仿163多附件添加功能

    通过分析标签"多附件添加"、"仿163附件添加"和"添加多个附件",我们可以深入探讨这个功能的核心技术点和实现步骤。 首先,我们需要理解多附件上传的基本原理。在Web应用中,用户通常通过点击一个“添加附件”按钮来...

    类似于网易附件上传源码

    "网易附件上传源码"很可能包含了这些功能的实现,它可能使用了常见的Web开发框架,如React、Vue或Angular,配合Node.js作为后端服务。源码中可能使用了axios等库来处理HTTP请求,以及multer、express-fileupload等...

    仿163附件上传,选择文件后立即上传,上传完成后可以删除,.NET源码

    该资源主要涉及的是一个.NET平台下的文件上传功能实现,特别提到了模仿网易163邮箱附件上传的用户体验。这里我们将详细探讨.NET源码在文件上传中的应用,以及SWFUpload库在其中的角色,同时也会讨论文件上传完成后...

    仿163附件上传asp.net源码

    【描述】中提到的“仿163附件上传”指的是模仿网易163邮箱的附件上传功能,163邮箱在早期因其简洁易用的上传界面和高效稳定的上传体验受到用户喜爱。这个源码演示了如何在ASP.NET环境中集成SwfUpload,实现类似163...

    模仿163js多文件上传

    "模仿163js多文件上传"是一个旨在实现类似网易163邮箱的多文件上传功能的JavaScript解决方案,它支持与服务器端如ASP、JSP、PHP等技术的交互,为用户提供便捷的批量上传体验。 首先,我们来详细解释这个功能的核心...

    163上传控件

    在"163上传控件"中,"带进度调皮"可能指的是该控件具有动态展示文件上传进度的功能,并且在设计上可能加入了一些趣味性的元素,使得上传过程更加生动有趣,提高用户参与度。例如,进度条可能会有动态效果,或者在上...

    像163一样添加附件/上传附件

    "像163一样添加附件/上传附件"这个标题暗示我们要实现一个类似网易163邮箱的附件上传体验。163邮箱以其用户友好的界面和流畅的上传流程而闻名,所以我们将在这一段内容中详细讲解如何使用CSS和JavaScript来创建这样...

    js添加附件

    js实现页面上传附件,和网易邮箱添加附件差不多一个效果。可以支持上传多个

    无刷新附件上传 (asp.net版 )

    无刷新附件上传是一种提高用户体验的技术,它允许用户在不刷新整个网页的情况下完成文件上传操作。在ASP.NET环境中实现这样的功能,通常需要结合HTML、CSS、JavaScript以及后台的服务器端处理来协同工作。在这个"无...

    html5拖拽上传.

    从Gmail的附件拖拽上传到网易邮箱、腾讯微博等平台的应用,可以看出这一技术为Web应用提供了更为直观便捷的操作方式。本文将详细介绍如何实现拖拽上传功能,并对所需的技术支持进行说明。 #### 二、拖拽上传的技术...

    winwebmail仿163界面

    - **异步上传**:大附件上传过程中,用户可以继续其他操作,提高用户体验。 **4. 自定义与美化** 由于`Winwebmail` 是开源的,用户可以根据自己的需求对仿163界面进行更深入的自定义和美化: - **CSS调整**:修改...

    网易新浪QQ邮箱的html在线编辑器

    总结,网易、QQ和新浪博客的在线编辑器在满足基本文字编辑需求的同时,结合各自平台的特点,提供了便利的附加功能。这些编辑器的易用性和功能性,极大地提升了用户的在线创作体验。而在线文本编辑器背后的技术实现,...

    winwebmail邮局系统3.8.1.3和3.8.1.5模板

    说明 这个只是模版 1.只适合用于winwebmail3.8.1.3和3.8.1.5。如果您还需要更旧版本的可以上网站留言...如:通过强化上传组件实现了G级附件的上传,及引用。可先发后传等。 9. 自动锁屏,永不掉线,新邮件到达提醒等。

    yeah页面js

    比如,邮件列表的动态加载、新邮件通知、邮件编辑和预览、附件上传等交互功能,都离不开JavaScript的驱动。 在提供的压缩包子文件中,我们看到两个文件:“(3封未读) 网易邮箱6.0版.html”和“(3封未读) 网易邮箱...

    PJBlog2 网易水墨风格

    3. js文件夹:存放JavaScript脚本,实现动态效果和交互功能。 4. images文件夹:存储图片资源,包括水墨风格的背景图、图标和其他装饰性图片。 5. templates文件夹:可能包含了其他可更换的主题模版。 6. config....

    JavaScript设置表单上传时文件个数的方法

    这是一个比较实用的功能,用JavaScript来设置表单上传文件时,根据需要生成上传表单,要几个生成几个,在网易邮箱、新浪邮箱的添加附件功能里都有这种功能,不过这一款没有删除表单的功能,如果输入的多了,只好重新...

    在线编辑器,163,网易等

    5. **163编辑器上传**:163邮箱的编辑器在邮件撰写时提供方便的文本编辑功能,同时也可能包含文件上传功能,方便用户发送带有附件的邮件。163编辑器注重用户体验,操作简便,且与163邮箱的其他功能紧密集成。 6. **...

    HTML5附件拖拽上传drop &amp; google.gears实现代码

    HTML5的拖拽上传功能为Web应用带来了更加直观和便捷的用户体验,特别是在电子邮件服务中,如Gmail和网易邮箱,以及社交媒体平台如腾讯微博,都已经实现了这一特性。拖拽上传的核心在于HTML5的新特性——`drag`和`...

    163 邮箱编辑器 邮箱编辑器

    7. **附件管理**:对于经常需要发送附件的用户,163邮箱编辑器可能会提供便捷的附件上传和管理功能,支持多文件上传和大小限制的优化。 8. **保存草稿**:在撰写过程中,编辑器会自动保存草稿,即使意外断电或关闭...

Global site tag (gtag.js) - Google Analytics