html5中文学习网

您的位置: 首页 > html5教程 > 入门教程 » 正文

HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法_html5教程技巧

[ ] 已经帮助:人解决问题
点评:本篇文章小编为大家介绍,HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法。需要的朋友参考下

HTML中与form有关的东东

新增属性qwwHTML5中文学习网 - HTML5先行者学习网

个人理解qwwHTML5中文学习网 - HTML5先行者学习网

formqwwHTML5中文学习网 - HTML5先行者学习网

html5之前,表单内的从属元素需要放入标签中,现在可以为标签指定form标签即可qwwHTML5中文学习网 - HTML5先行者学习网

点评:该功能解决了我们实际中遇到的一些问题,比如iframe模拟异步图片上传时,就必须将图片写到form外。qwwHTML5中文学习网 - HTML5先行者学习网

formactionqwwHTML5中文学习网 - HTML5先行者学习网

formmethodqwwHTML5中文学习网 - HTML5先行者学习网

该属性用于按钮(submit)让表单提交页面可又按钮控制qwwHTML5中文学习网 - HTML5先行者学习网

formmethod指定各按钮提交方式qwwHTML5中文学习网 - HTML5先行者学习网

placehoderqwwHTML5中文学习网 - HTML5先行者学习网

该属性非常有用,用于文本框中显示提示信息,非常有用的一属性qwwHTML5中文学习网 - HTML5先行者学习网

listqwwHTML5中文学习网 - HTML5先行者学习网

list属性需要与datalist一同使用,相当于文本框,模拟select,非常适用的一个属性qwwHTML5中文学习网 - HTML5先行者学习网

autofocusqwwHTML5中文学习网 - HTML5先行者学习网

用于文本框主动获取焦点,有用的东东qwwHTML5中文学习网 - HTML5先行者学习网

新增input属性,解放验证,各浏览器支持不好qwwHTML5中文学习网 - HTML5先行者学习网

telqwwHTML5中文学习网 - HTML5先行者学习网

用于电话qwwHTML5中文学习网 - HTML5先行者学习网

urlqwwHTML5中文学习网 - HTML5先行者学习网

验证urlqwwHTML5中文学习网 - HTML5先行者学习网

emailqwwHTML5中文学习网 - HTML5先行者学习网

验证邮箱qwwHTML5中文学习网 - HTML5先行者学习网

date/timeqwwHTML5中文学习网 - HTML5先行者学习网

日期类验证,会出现日期选择插件哦。。。qwwHTML5中文学习网 - HTML5先行者学习网

numberqwwHTML5中文学习网 - HTML5先行者学习网

只能是数字qwwHTML5中文学习网 - HTML5先行者学习网

rangeqwwHTML5中文学习网 - HTML5先行者学习网

控制数字范围qwwHTML5中文学习网 - HTML5先行者学习网

colorqwwHTML5中文学习网 - HTML5先行者学习网

颜色选择器,好东西啊。。。qwwHTML5中文学习网 - HTML5先行者学习网

HTML5中增加了很多与form有关的属性,说实在的,这些东西真心贴心啊!!!很大程度上讲:qwwHTML5中文学习网 - HTML5先行者学习网

完全解放表单验证qwwHTML5中文学习网 - HTML5先行者学习网

若不是考虑兼容性问题,老夫恨不得立即投入其中,但一旦想起兼容性问题的话,你就会非常头疼!!!qwwHTML5中文学习网 - HTML5先行者学习网

因为原本很好的东西,却是因为历史的原因,反而会增加我们的工作量!!!qwwHTML5中文学习网 - HTML5先行者学习网

在错的时间,做对的事情,他看起来是对的,实际上也是对的。。。但你会发现,他错了。。。。qwwHTML5中文学习网 - HTML5先行者学习网

增强页面元素

项目qwwHTML5中文学习网 - HTML5先行者学习网

个人理解qwwHTML5中文学习网 - HTML5先行者学习网

figure/figcaptionqwwHTML5中文学习网 - HTML5先行者学习网

据说表示页面独立内容,移除后无影响,暂无发现用处..qwwHTML5中文学习网 - HTML5先行者学习网

detailsqwwHTML5中文学习网 - HTML5先行者学习网

该标签有点意思,用于替代js中,元素收起展开功能。qwwHTML5中文学习网 - HTML5先行者学习网

最新ff都不支持……个人觉得,既然提供了该标签应该提供属性表示上下展开或者左右展开;qwwHTML5中文学习网 - HTML5先行者学习网

markqwwHTML5中文学习网 - HTML5先行者学习网

高亮显示,当真语义化qwwHTML5中文学习网 - HTML5先行者学习网

progressqwwHTML5中文学习网 - HTML5先行者学习网

丝们,可以告别gif图片了,也不用div模拟百分比了,与windows区域一致的进度条出现啦,异步文件上传更加完善!qwwHTML5中文学习网 - HTML5先行者学习网

改良olqwwHTML5中文学习网 - HTML5先行者学习网

老夫就没有用过这个主。。。qwwHTML5中文学习网 - HTML5先行者学习网

……qwwHTML5中文学习网 - HTML5先行者学习网

 以上元素属于可有可无的元素,不必赘述,接下来,本文明星对象登场:qwwHTML5中文学习网 - HTML5先行者学习网

文件API

 FileList与file对象:qwwHTML5中文学习网 - HTML5先行者学习网

在html4中,file标签只允许选择一个文件,但html5中,对file标签设置multiple属性后,变可以选择多文件了!!!qwwHTML5中文学习网 - HTML5先行者学习网

而,选择后便会形成这里的filelist对象,即一个个file组成的对象列表,简单来说就是file数组。qwwHTML5中文学习网 - HTML5先行者学习网

file对象具有2属性,name代表文件名(不包括路径),lastModifiedDate表示最后修改时间qwwHTML5中文学习网 - HTML5先行者学习网

其实我们在html4中操作file时,可以获取本地很多属性,比如文件大小,但是万恶的ie不支持,到ie9后才有所好转。qwwHTML5中文学习网 - HTML5先行者学习网

所以想客户端提示文件上传过大的同学放弃吧。。。qwwHTML5中文学习网 - HTML5先行者学习网

 qwwHTML5中文学习网 - HTML5先行者学习网

Blob对象qwwHTML5中文学习网 - HTML5先行者学习网

表示二进制原始数据,提供一slice方法访问字节内部原始数据;size表示blob对象字节长度、type表示其mime类型,类型未知则返回空字符串。qwwHTML5中文学习网 - HTML5先行者学习网

来来,简单做一实验:qwwHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
qwwHTML5中文学习网 - HTML5先行者学习网
关于File qwwHTML5中文学习网 - HTML5先行者学习网
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">qwwHTML5中文学习网 - HTML5先行者学习网
<html xmlns="http://www.w3.org/1999/xhtml">qwwHTML5中文学习网 - HTML5先行者学习网
<head>qwwHTML5中文学习网 - HTML5先行者学习网
<title></title>qwwHTML5中文学习网 - HTML5先行者学习网
<script src="../jquery-1.7.1.js" type="text/javascript"></script>qwwHTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript">qwwHTML5中文学习网 - HTML5先行者学习网
$(document).ready(function () {qwwHTML5中文学习网 - HTML5先行者学习网
$('#wl').click(function () {qwwHTML5中文学习网 - HTML5先行者学习网
var f = $('#file')[0];qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
var s = '';qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
});qwwHTML5中文学习网 - HTML5先行者学习网
});qwwHTML5中文学习网 - HTML5先行者学习网
</script>qwwHTML5中文学习网 - HTML5先行者学习网
</head>qwwHTML5中文学习网 - HTML5先行者学习网
<body>qwwHTML5中文学习网 - HTML5先行者学习网
<input type="file" id="file" multiple />qwwHTML5中文学习网 - HTML5先行者学习网
<button id="wl">qwwHTML5中文学习网 - HTML5先行者学习网
文件上传</button>qwwHTML5中文学习网 - HTML5先行者学习网
</body>qwwHTML5中文学习网 - HTML5先行者学习网
</html>qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网

我们在ff中选择图片后,提交,设个断点看看:qwwHTML5中文学习网 - HTML5先行者学习网

qwwHTML5中文学习网 - HTML5先行者学习网

file主角登场,就是他了,我们将之属性输出来看看:qwwHTML5中文学习网 - HTML5先行者学习网

qwwHTML5中文学习网 - HTML5先行者学习网

真的是应有尽有啊!有了该属性就可以做很多事情了,但是。。。我们来看看ie7、8:qwwHTML5中文学习网 - HTML5先行者学习网

qwwHTML5中文学习网 - HTML5先行者学习网

各位观众,人家压根没这个属性,所以一切百搭。。。qwwHTML5中文学习网 - HTML5先行者学习网

话说,我觉得ie浏览器调试起来很痛苦,请问各位大神有没有什么好的ie开发插件,就像ff的firebug,google自带的插件??qwwHTML5中文学习网 - HTML5先行者学习网

 qwwHTML5中文学习网 - HTML5先行者学习网

FIleReader接口 qwwHTML5中文学习网 - HTML5先行者学习网

filereader接口,可将文件读入内存,有了这个东东我们就可以很舒服的做图片预览了,但他的公用不止如此。qwwHTML5中文学习网 - HTML5先行者学习网

filereader的四个方法:qwwHTML5中文学习网 - HTML5先行者学习网

readAsBinaryString 将文件读取为二进制码——通常我们将数据传给后端;qwwHTML5中文学习网 - HTML5先行者学习网

readAsText 将文件读取为文本——读取文本内容;qwwHTML5中文学习网 - HTML5先行者学习网

readAsURL 将文件读取为DataURL——一般是小文件,图片或者html;qwwHTML5中文学习网 - HTML5先行者学习网

abort 中断读取,因为文件过大等待时间就很长了qwwHTML5中文学习网 - HTML5先行者学习网

 qwwHTML5中文学习网 - HTML5先行者学习网

filereader接口事件:qwwHTML5中文学习网 - HTML5先行者学习网

onabort 读取中断触发;qwwHTML5中文学习网 - HTML5先行者学习网

onerror 读取失败触发;qwwHTML5中文学习网 - HTML5先行者学习网

onloadstart 开始读取时触发;qwwHTML5中文学习网 - HTML5先行者学习网

onprogress 读取中qwwHTML5中文学习网 - HTML5先行者学习网

onload 读取成功时触发;qwwHTML5中文学习网 - HTML5先行者学习网

onloadend 读取完成后触发,无论成功失败;qwwHTML5中文学习网 - HTML5先行者学习网

光说不练不行,我们这里做个小实验:qwwHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
qwwHTML5中文学习网 - HTML5先行者学习网
我是一个小实验 qwwHTML5中文学习网 - HTML5先行者学习网
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">qwwHTML5中文学习网 - HTML5先行者学习网
<html xmlns="http://www.w3.org/1999/xhtml">qwwHTML5中文学习网 - HTML5先行者学习网
<head>qwwHTML5中文学习网 - HTML5先行者学习网
<title></title>qwwHTML5中文学习网 - HTML5先行者学习网
<script src="../jquery-1.7.1.js" type="text/javascript"></script>qwwHTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript">qwwHTML5中文学习网 - HTML5先行者学习网
$(document).ready(function () {qwwHTML5中文学习网 - HTML5先行者学习网
var bt = $('#wl');qwwHTML5中文学习网 - HTML5先行者学习网
var file = $('#file');qwwHTML5中文学习网 - HTML5先行者学习网
var type = $('#type');qwwHTML5中文学习网 - HTML5先行者学习网
var result = $('#result');qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
var func = {};qwwHTML5中文学习网 - HTML5先行者学习网
func.readAsDataURL = function (file) {qwwHTML5中文学习网 - HTML5先行者学习网
//验证是否为图片qwwHTML5中文学习网 - HTML5先行者学习网
if (!/image///w+/.test(file.type)) {qwwHTML5中文学习网 - HTML5先行者学习网
alert('非图片格式');qwwHTML5中文学习网 - HTML5先行者学习网
return false;qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
var reader = new FileReader();qwwHTML5中文学习网 - HTML5先行者学习网
reader.readAsDataURL(file);qwwHTML5中文学习网 - HTML5先行者学习网
reader.onload = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
result.html('<img src="' + this.result + '"/>');qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
func.readAsBinaryString = function (file) {qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
var reader = new FileReader();qwwHTML5中文学习网 - HTML5先行者学习网
reader.readAsBinaryString(file);qwwHTML5中文学习网 - HTML5先行者学习网
reader.onload = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
result.html(this.result);qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
func.readAsText = function (file) {qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
var reader = new FileReader();qwwHTML5中文学习网 - HTML5先行者学习网
reader.readAsText(file);qwwHTML5中文学习网 - HTML5先行者学习网
reader.onload = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
result.html(this.result);qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
bt.click(function () {qwwHTML5中文学习网 - HTML5先行者学习网
if (func[type.val()] && typeof func[type.val()] == 'function') {qwwHTML5中文学习网 - HTML5先行者学习网
func[type.val()](file[0].files[0]);qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
});qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
});qwwHTML5中文学习网 - HTML5先行者学习网
</script>qwwHTML5中文学习网 - HTML5先行者学习网
</head>qwwHTML5中文学习网 - HTML5先行者学习网
<body>qwwHTML5中文学习网 - HTML5先行者学习网
<div id="result">qwwHTML5中文学习网 - HTML5先行者学习网
</div>qwwHTML5中文学习网 - HTML5先行者学习网
<input type="file" id="file" multiple />qwwHTML5中文学习网 - HTML5先行者学习网
<select id="type">qwwHTML5中文学习网 - HTML5先行者学习网
<option value="readAsDataURL">readAsDataURL</option>qwwHTML5中文学习网 - HTML5先行者学习网
<option value="readAsBinaryString">readAsBinaryString</option>qwwHTML5中文学习网 - HTML5先行者学习网
<option value="readAsText">readAsText</option>qwwHTML5中文学习网 - HTML5先行者学习网
</select>qwwHTML5中文学习网 - HTML5先行者学习网
<button id="wl">qwwHTML5中文学习网 - HTML5先行者学习网
读取文件</button>qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
</body>qwwHTML5中文学习网 - HTML5先行者学习网
</html>qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网

用最新浏览器运行试试呢!qwwHTML5中文学习网 - HTML5先行者学习网

我们再做一个判断,看看其事件执行顺序:qwwHTML5中文学习网 - HTML5先行者学习网

       reader.onload = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
                    alert('onload');qwwHTML5中文学习网 - HTML5先行者学习网
                }qwwHTML5中文学习网 - HTML5先行者学习网
                reader.onprogress = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
                    alert('onprogress');qwwHTML5中文学习网 - HTML5先行者学习网
                }qwwHTML5中文学习网 - HTML5先行者学习网
                reader.onerror = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
                    alert('onerror');qwwHTML5中文学习网 - HTML5先行者学习网
                }qwwHTML5中文学习网 - HTML5先行者学习网
                reader.onloadstart = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
                    alert('onloadstart');qwwHTML5中文学习网 - HTML5先行者学习网
                }qwwHTML5中文学习网 - HTML5先行者学习网
                reader.onloaded = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
                    alert('onloaded');qwwHTML5中文学习网 - HTML5先行者学习网
                }qwwHTML5中文学习网 - HTML5先行者学习网

此处具体应用:qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网


复制代码
代码如下:
qwwHTML5中文学习网 - HTML5先行者学习网
简单图片上传 qwwHTML5中文学习网 - HTML5先行者学习网
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">qwwHTML5中文学习网 - HTML5先行者学习网
<html xmlns="http://www.w3.org/1999/xhtml">qwwHTML5中文学习网 - HTML5先行者学习网
<head>qwwHTML5中文学习网 - HTML5先行者学习网
<title></title>qwwHTML5中文学习网 - HTML5先行者学习网
<style type="text/css">qwwHTML5中文学习网 - HTML5先行者学习网
body{ font-size: 14px;}qwwHTML5中文学习网 - HTML5先行者学习网
.image_upload{ margin:10px; border: 1px solid #E0E0E0; text-align: center; padding:5px; display: inline-block; position: relative; }qwwHTML5中文学习网 - HTML5先行者学习网
.image_upload img{ max-height: 150px; max-width: 150px; }qwwHTML5中文学习网 - HTML5先行者学习网
.image_upload .rate { position: absolute; top: 6px; left: 6px; padding: 0 5px; color: White; background: black; border-radius: 5px; filter:alpha(opacity=60); -moz-opacity:0.6; -khtml-opacity: 0.6; opacity: 0.6; }qwwHTML5中文学习网 - HTML5先行者学习网
.image_upload .delete { background: url("images/del.png") no-repeat scroll 0 0 transparent; cursor: pointer; height: 16px; position: absolute; right: -6px; top: -6px; width: 16px;}qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
</style>qwwHTML5中文学习网 - HTML5先行者学习网
<script src="js/jquery-1.7.1.js" type="text/javascript"></script>qwwHTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript">qwwHTML5中文学习网 - HTML5先行者学习网
$(document).ready(function () {qwwHTML5中文学习网 - HTML5先行者学习网
var j_bt_sub = $('#submitForm'),qwwHTML5中文学习网 - HTML5先行者学习网
j_form = $('#form'),qwwHTML5中文学习网 - HTML5先行者学习网
j_state = $('#upState'),qwwHTML5中文学习网 - HTML5先行者学习网
j_file = $('#files');qwwHTML5中文学习网 - HTML5先行者学习网
var is_support = true; //判断是否支持高级特性,经测试若是不支持filereader与fileqwwHTML5中文学习网 - HTML5先行者学习网
if (typeof FileReader === 'undefined') is_support = false;qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
j_file.change(function () {qwwHTML5中文学习网 - HTML5先行者学习网
var file = j_file.get(0);qwwHTML5中文学习网 - HTML5先行者学习网
if (!file.files[0]) is_support = false;qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
//支持高级功能的浏览器qwwHTML5中文学习网 - HTML5先行者学习网
if (is_support) {qwwHTML5中文学习网 - HTML5先行者学习网
files = file.files;qwwHTML5中文学习网 - HTML5先行者学习网
for (var k = 0, len = files.length; k < len; k++) {qwwHTML5中文学习网 - HTML5先行者学习网
var file = files[k];qwwHTML5中文学习网 - HTML5先行者学习网
var reader = new FileReader();qwwHTML5中文学习网 - HTML5先行者学习网
reader.readAsDataURL(file);qwwHTML5中文学习网 - HTML5先行者学习网
(function (k) {qwwHTML5中文学习网 - HTML5先行者学习网
reader.onloadend = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
if (reader.error) {qwwHTML5中文学习网 - HTML5先行者学习网
alert(reader.error);qwwHTML5中文学习网 - HTML5先行者学习网
} else {qwwHTML5中文学习网 - HTML5先行者学习网
var up = $('<div class="image_upload" id="up_' + k + '"></div>');qwwHTML5中文学习网 - HTML5先行者学习网
var img = $('<img src="' + this.result + '" alt="" id="img_' + k + '">');qwwHTML5中文学习网 - HTML5先行者学习网
var rate = $('<div class="rate" id="rate_' + k + '">0%</div>');qwwHTML5中文学习网 - HTML5先行者学习网
var del = $('<div class="delete" title="删除" id="del_' + k + '"></div>');qwwHTML5中文学习网 - HTML5先行者学习网
up.append(img);qwwHTML5中文学习网 - HTML5先行者学习网
up.append(rate);qwwHTML5中文学习网 - HTML5先行者学习网
up.append(del);qwwHTML5中文学习网 - HTML5先行者学习网
del.click(function () {qwwHTML5中文学习网 - HTML5先行者学习网
$(this).parent().remove();qwwHTML5中文学习网 - HTML5先行者学习网
});qwwHTML5中文学习网 - HTML5先行者学习网
j_state.append(up);qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
};qwwHTML5中文学习网 - HTML5先行者学习网
})(k);qwwHTML5中文学习网 - HTML5先行者学习网
} //forqwwHTML5中文学习网 - HTML5先行者学习网
} else {qwwHTML5中文学习网 - HTML5先行者学习网
//不支持的话采用传统方式qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
});qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
//此处应该支持平滑后退,后面考虑qwwHTML5中文学习网 - HTML5先行者学习网
j_bt_sub.click(function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
if (is_support) {qwwHTML5中文学习网 - HTML5先行者学习网
var file = j_file.get(0);qwwHTML5中文学习网 - HTML5先行者学习网
files = file.files;qwwHTML5中文学习网 - HTML5先行者学习网
for (var k = 0, len = files.length; k < len; k++) {qwwHTML5中文学习网 - HTML5先行者学习网
var file = files[k];qwwHTML5中文学习网 - HTML5先行者学习网
upload(file, k);qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
});qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
function upload(file, k) {qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
var up = $('#up_' + k);qwwHTML5中文学习网 - HTML5先行者学习网
var img = $('#img_' + k);qwwHTML5中文学习网 - HTML5先行者学习网
var rate = $('#rate_' + k);qwwHTML5中文学习网 - HTML5先行者学习网
var del = $('#del_' + k);qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
var fd = new FormData();qwwHTML5中文学习网 - HTML5先行者学习网
fd.append('upload', file);qwwHTML5中文学习网 - HTML5先行者学习网
var xhr = new XMLHttpRequest();qwwHTML5中文学习网 - HTML5先行者学习网
xhr.upload.addEventListener('progress', function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
var percentComplete = Math.round((e.loaded) * 100 / e.total);qwwHTML5中文学习网 - HTML5先行者学习网
rate.html(percentComplete.toString() + '%');qwwHTML5中文学习网 - HTML5先行者学习网
}, false);qwwHTML5中文学习网 - HTML5先行者学习网
// 文件上传成功或是失败qwwHTML5中文学习网 - HTML5先行者学习网
xhr.onreadystatechange = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
if (xhr.readyState == 4) {qwwHTML5中文学习网 - HTML5先行者学习网
if (xhr.status == 200) {qwwHTML5中文学习网 - HTML5先行者学习网
rate.html('100%');qwwHTML5中文学习网 - HTML5先行者学习网
var url = xhr.responseText;qwwHTML5中文学习网 - HTML5先行者学习网
img.attr('src', url);qwwHTML5中文学习网 - HTML5先行者学习网
var s = '';qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
};qwwHTML5中文学习网 - HTML5先行者学习网
xhr.open("POST", "fileUpload.ashx");qwwHTML5中文学习网 - HTML5先行者学习网
//发送 qwwHTML5中文学习网 - HTML5先行者学习网
xhr.send(fd);qwwHTML5中文学习网 - HTML5先行者学习网
}qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
}); qwwHTML5中文学习网 - HTML5先行者学习网
</script>qwwHTML5中文学习网 - HTML5先行者学习网
</head>qwwHTML5中文学习网 - HTML5先行者学习网
<body>qwwHTML5中文学习网 - HTML5先行者学习网
<div id="upState"></div>qwwHTML5中文学习网 - HTML5先行者学习网
<form id="uploadForm" action="fileUpload.ashx" method="post" enctype="multipart/form-data">qwwHTML5中文学习网 - HTML5先行者学习网
<input id="files" type="file" size="30" name="file[]" multiple />qwwHTML5中文学习网 - HTML5先行者学习网
<button type="button" id="submitForm">上传图片</button>qwwHTML5中文学习网 - HTML5先行者学习网
</form>qwwHTML5中文学习网 - HTML5先行者学习网
</body>qwwHTML5中文学习网 - HTML5先行者学习网
</html>qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
拖放API其实之前,我还用jquery写了个拖放的插件呢。。qwwHTML5中文学习网 - HTML5先行者学习网

工作中碰到的一些东西【弹出窗口】【拖放】【异步文件上传】qwwHTML5中文学习网 - HTML5先行者学习网

但是集成在HTML5中当然更好!!!我们现在来看看这个东东。。。并且它的强大之处,就是不止在浏览器中拖动,这就不得了了哦(拖动图片上传)qwwHTML5中文学习网 - HTML5先行者学习网

html5中默认对图片、链接可以拖放,其它元素需要设置draggable="true"才能拖放,事不宜迟,老夫马上去试试。qwwHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
qwwHTML5中文学习网 - HTML5先行者学习网
<strong>拖放的例子 qwwHTML5中文学习网 - HTML5先行者学习网
</strong> <!DOCTYPE html>qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
<html xmlns="http://www.w3.org/1999/xhtml">qwwHTML5中文学习网 - HTML5先行者学习网
<head>qwwHTML5中文学习网 - HTML5先行者学习网
<title></title>qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
</head>qwwHTML5中文学习网 - HTML5先行者学习网
<body>qwwHTML5中文学习网 - HTML5先行者学习网
<div id="dragme" draggable="true" style=" width: 200px; border: 1px solid gray;">请拖放</div>qwwHTML5中文学习网 - HTML5先行者学习网
<div id="text" style=" width: 200px; height: 200px; border: 1px solid gray;"></div>qwwHTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript">qwwHTML5中文学习网 - HTML5先行者学习网
document.ondragover = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
e.preventDefault();qwwHTML5中文学习网 - HTML5先行者学习网
};qwwHTML5中文学习网 - HTML5先行者学习网
document.ondrop = function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
e.preventDefault();qwwHTML5中文学习网 - HTML5先行者学习网
};qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
var source = document.getElementById('dragme');qwwHTML5中文学习网 - HTML5先行者学习网
var dest = document.getElementById('text');qwwHTML5中文学习网 - HTML5先行者学习网
source.addEventListener('dragstart', function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
var dt = e.dataTransfer;qwwHTML5中文学习网 - HTML5先行者学习网
dt.setData('text/plain', '您好' + new Date());qwwHTML5中文学习网 - HTML5先行者学习网
}, false);qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
dest.addEventListener('dragend', function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
e.preventDefault();qwwHTML5中文学习网 - HTML5先行者学习网
}, false);qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
dest.addEventListener('drop', function (e) {qwwHTML5中文学习网 - HTML5先行者学习网
var dt = e.dataTransfer;qwwHTML5中文学习网 - HTML5先行者学习网
var text = dt.getData('text/plain');qwwHTML5中文学习网 - HTML5先行者学习网
dest.innerHTML += text;qwwHTML5中文学习网 - HTML5先行者学习网
e.stopPropagation();qwwHTML5中文学习网 - HTML5先行者学习网
e.preventDefault();qwwHTML5中文学习网 - HTML5先行者学习网
return false;qwwHTML5中文学习网 - HTML5先行者学习网
}, false);qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网
</script>qwwHTML5中文学习网 - HTML5先行者学习网
</body>qwwHTML5中文学习网 - HTML5先行者学习网
</html>qwwHTML5中文学习网 - HTML5先行者学习网
qwwHTML5中文学习网 - HTML5先行者学习网

qwwHTML5中文学习网 - HTML5先行者学习网

拖放时候一定要记住,阻止页面默认行为,否则会打开新窗口的,其中以下亦是重点:qwwHTML5中文学习网 - HTML5先行者学习网

1 拖放可使用DataTransfer传递数据,该对象是非常有用的,因为在拖动目标元素时,可能会经过其它元素,我们可以用此传递信息;qwwHTML5中文学习网 - HTML5先行者学习网

API:qwwHTML5中文学习网 - HTML5先行者学习网

dragstart 被拖放元素 开始拖放时qwwHTML5中文学习网 - HTML5先行者学习网

drag 被拖放元素 拖放过程中qwwHTML5中文学习网 - HTML5先行者学习网

dragenter 拖放过程中鼠标经过的元素 被拖放元素开始进入本元素时qwwHTML5中文学习网 - HTML5先行者学习网

dragover  拖放过程中鼠标经过的元素 本元素内移动qwwHTML5中文学习网 - HTML5先行者学习网

drageleave  拖放过程中鼠标经过的元素 离开本元素qwwHTML5中文学习网 - HTML5先行者学习网

drop 拖放的目标元素 拖动的元素放到了本元素中qwwHTML5中文学习网 - HTML5先行者学习网

dragend 拖放的对象 拖放结束qwwHTML5中文学习网 - HTML5先行者学习网

其实这里是有问题的,我并未去深入研究从开始拖动到经过各种元素会产生神马情况,这个可以作为二次学习时的重点研究对象。qwwHTML5中文学习网 - HTML5先行者学习网

结语 qwwHTML5中文学习网 - HTML5先行者学习网

html5的文件和表单做的比较精致,个人感觉比布局新增的几个标签有用多了,明天开始学习canvas,虽然不懂,虽然见过,但是还是感觉很厉害的样子! qwwHTML5中文学习网 - HTML5先行者学习网

qwwHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助