`

jQuery入门教程-15 Days of jQuery(Day 11) --- 使用不苛刻的javascript代码实现多文件上传

阅读更多
转载自网络
好几个月以前,当我在追逐互联网上AJAX热潮的时候,我在 FiftyFourEleven网站上发现了一篇使用创新的javascript代码实现当时正在困扰我的“ 单文件元素实现多文件上传”的文章。

所以当我想写作《15天漫游jQuery》的时候,我第一个想到的就是用jQuery实现这个功能。

接触易用性狂热爱好者

几天前当我检查网站记录的时候,发现了一条遗漏的文章trackback。跟过去看的时候我发现我的两篇jQuery文章被作者引用来证明他为什么讨厌javascript。

根据这个人的说法,任何工具或技术如果没有将易用性放在第一位都将成为垃圾。

尽管我很不同意这位仁兄一杆子打死的态度,但他还是让我对这篇详细教程有所留意。当我在编写一个简单网页效果的时候,我会尽量小心谨慎的处理。这样如果网站访客们决定关闭javascript代码执行功能的时候,他们仍然可以正常使用网站的功能。

关于第一价值的两个教程

    使用一个文件输入元素实现多文件上传,并让整个交互过程流畅舒适。

    让多文件上传更加人性化,但要避免以牺牲可用性为代价。关键在于使用不苛刻的javascript代码制作多文件输入区域。

演示

    只有一个文件输入元素,但添加了jQuery和其他代码实现较为亲近用户的多文件上传功能。

演示一地址

    在页面(x)html代码中使用了多个文件输入元素,但通过jQuery调整为与第一个演示类似的显示页面效果。优点是代码是不苛刻的。。。即使关闭了javascript执行,用户也能上传多个文件。

演示二地址

解释

单文件输入框

jQuery的$(document).ready() 函数的工作有两个:

在文档下载量最大的时候创建一个div元素。 查找文件上传框(假设这里只有一个),然后给它附上一个onChange事件。

$("input[@type=file]").change(function(){
doIt(this, fileMax);
});

doit()函数(简单又好记,呵呵~)检查是否达到了最大文件数量限制,如果不是,它会隐藏当前文件输入框,在父div里添加一个新的文件输入框,将输入框内的文件名使用id “files_list”作为标记,在最后添加一个“删除”按钮。

在DOM树中导航,我使用jQuery的parent()函数,然后用remove()函数移除元素。我还使用了append()和prepend()函数分别添加文件名和新的输入框。

两个关键点

- 最大文件上传数量设定:

var fileMax = 3;

- 输入框必须有适当的定位措施:

<input type="file" class="upload" name="fileX[]"/>

这样弄以后输入框可疑由访问者决定添加还是删除,没有任何关于id或名称的操作。当这个窗体代码发送给服务器端脚本的时候,相关信息就已经被存放在了一个数组中了。

多文件输入框

首先,文件允许上传的数量由页面中的文件输入框的数量决定。其次,你仍然需要通过某种方法为每个输入框接收到的内容用一个数组存放。

<input type="file" class="upload" name="fileX[]"/>

第二个演示跟前面的比起来最大的不同在于,我遍历了每个文件输入框并在其内容有改动时执行doit()函数。通过遍历每一个输入框,我可以为我的代码添加有用的额外信息:输入框内容在“堆栈”中的顺序。

换句话说,当这段代码执行时,它会特别指定第一个输入框,或者第二个,抑或第三个。

代码见下:

$("input[@type=file]:nthoftype("+
n+")")

jQuery的灵活性允许我们使用CSS和XPath描述语句定位指定的元素位置。

你会发现当一个文件被选中时,文件输入框都会被文件名称覆盖。点击文件名就可以选择其他不同的文件。
分享到:
评论

相关推荐

    【JavaScript源代码】jQuery实现可以扩展的日历.docx

    【JavaScript源代码】jQuery实现可扩展日历 在IT行业中,开发自定义的用户界面组件是一种常见的需求,尤其是在Web开发中。本示例探讨的是如何使用JavaScript和jQuery库创建一个可扩展的日历插件,以满足特定的产品...

    jquery.doc

    在 "15 Days of jQuery (Day 2)" 中,教程展示了如何轻松创建双色表格。传统的 CSS 方法可能需要编写较多的代码,而 jQuery 只需几行就能实现相同的效果。这凸显了 jQuery 在简化任务和提高开发效率方面的价值。 ...

    jQuery实现的某酒店预订页面双日期选择框的效果源码.zip

    这个"jQuery实现的某酒店预订页面双日期选择框的效果源码.zip"包含了一个使用jQuery库来创建这种功能的示例代码。jQuery是JavaScript的一个强大库,它简化了DOM操作、事件处理和Ajax交互等任务,使得网页开发更加...

    jQuery计时器插件TimeCircles多种效果

    **jQuery计时器插件TimeCircles:丰富的定时与倒计时解决方案** TimeCircles是一款基于jQuery的轻量级插件,它为开发者提供了一种优雅的方式来创建视觉上吸引人的计时器和倒计时器。这个插件以其灵活性、易用性和...

    Jquery mobile UI组件详解

    本文主要介绍 Jquery Mobile 中的 UI 组件,包括单选框、多选框和下拉列表,并对它们的使用方法、配置选项、API 方法以及事件进行了详细介绍。 #### 二、单选框(Radio Buttons) **2.1 范例代码** ```html ...

    jQuery日历插件CLNDR特效代码

    - **灵活性**:CLNDR不依赖特定的JavaScript库,除了jQuery之外,还可以与Moment.js等时间处理库配合使用,提供更强大的日期操作功能。 ### 2. 使用步骤 - **安装**:首先,你需要在项目中引入jQuery库,然后下载...

    js简易日历特效原生代码

    "js简易日历特效原生代码"的标题暗示了我们将探讨如何利用纯JavaScript实现一个基本的日历功能,无需依赖任何外部库,如jQuery或其他日期管理库。 首先,让我们了解JavaScript中的日期处理。JavaScript内置了一个`...

    javasctipt如何显示几分钟前、几天前等.docx

    ### JavaScript 如何显示几分钟前、几天前等时间差方法详解 #### 标题与描述解析: 标题和描述都提到了“JavaScript如何显示几分钟前、几天前等”。这明确指向了一个功能性的需求——即如何在前端使用JavaScript...

    寒假倒计时

    1. **jQuery**:文件`jquery-1.9.1.min.js`和`jquery-ui.min.js`表明这个项目使用了jQuery库,它是一个广泛使用的JavaScript库,简化了DOM操作、事件处理和Ajax交互。`jquery-ui.min.js`则提供了jQuery UI组件,可能...

    jQuery时间日期三级联动(推荐)

    在本文中,我们将深入探讨如何使用jQuery实现时间日期三级联动的效果。这个效果通常用于日历选择器或表单中,用户可以选择年、月、日,而下级的选择会根据上一级的选择动态更新。以下是实现这一功能的关键知识点: ...

    js日历选择代码,js实现日历选择

    本篇将详细讲解如何使用JavaScript来实现一个基本的日历选择器。 首先,我们需要了解JavaScript的基础知识,包括DOM操作、事件处理和日期对象。在JavaScript中,`Date`对象用于处理日期和时间。我们可以创建一个新...

    日期插件datarangepicker使用demo

    【日期插件datarangepicker使用demo】是一款在前端开发中常用的工具,主要用于用户在Web页面上选择日期或日期范围。这个插件以其易用性、灵活性和丰富的自定义选项而受到开发者们的青睐。下面我们将详细探讨这个插件...

    jQuery 实现倒计时天,时,分,秒功能

    在本文中,我们将探讨如何使用jQuery来实现一个倒计时功能,显示剩余的天数、小时数、分钟数和秒数。这个功能在各种应用场景中都很常见,例如在线考试、活动截止日期提醒或者产品发布的倒计时等。 首先,我们需要...

    timeago.js自动将时间戳转换为更易读的时间轴

    这款插件基于广泛使用的jQuery框架,因此在兼容性和易用性上有着显著优势。 时间ago.js的核心功能是动态更新页面上的时间显示,无需手动刷新页面。这对于创建实时更新的应用程序,如社交媒体、论坛或者博客,尤其...

    JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享

    本文将探讨如何使用JavaScript(包括jQuery)来实现这种时间差显示效果。 首先,我们来看JavaScript的基础实现。JavaScript提供了内置的Date对象,通过这个对象我们可以获取当前时间(`new Date().getTime()`返回的...

    情人节程序员用HTML网页表白【爱的计时】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript

    &lt;script src="./jscss/jquery-1.8.3.min.js" type="text/javascript"&gt; &lt;script type="text/javascript"&gt; $(window).resize(function(){ var containerWidth = $('.container').outerWidth(); var windowWidth =...

    JavaScript blog式日历控件

    根据给定的信息,“JavaScript blog式日历控件”是一个用于网页的日历插件或组件,其功能在于提供一个用户友好的界面来展示日期,并允许用户选择特定日期。然而,该日历控件的一个限制是它不能以弹出窗口的形式显示...

    jquery 简单应用示例总结

    jQuery是一个快速、小巧、功能丰富的JavaScript库。它通过减少HTML文档遍历、事件处理、动画和Ajax交互的代码量,使得Web开发变得更加便捷。本文将总结一些在实际应用中常见的jQuery功能片段,并对每个知识点进行...

    html 渲染 vue的日历页面

    至于jQuery的引入,虽然Vue本身提供了丰富的API来处理DOM操作,但有时我们仍然需要使用jQuery来实现某些特定的交互效果或兼容性处理。例如,我们可以使用jQuery的动画库来创建平滑的过渡效果,或者使用`$.ajax`进行...

    JS秒杀倒计时功能完整实例【使用jQuery3.1.1】

    在本实例中,我们使用了JavaScript和jQuery库来实现一个动态的倒计时功能,具体实现如下: 1. 页面结构设计:使用HTML标签来展示倒计时的时间单位,包括天、小时、分钟和秒。这里利用了四个`&lt;span&gt;`标签,它们的ID...

Global site tag (gtag.js) - Google Analytics