• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >jquery > jQuery实现jQuery-form.js实现异步上传文件

jQuery实现jQuery-form.js实现异步上传文件

作者:eidolons 字体:[增加 减小] 来源:互联网

eidolons 通过本文主要向大家介绍了jqueryform,异步上传,jquery,form,异步,jquery,form,异步提交等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

做为一个前端开发,你肯定遇到过这样的需求:异步上传文件,还要兼容IE 8。[纳尼,没遇到过,那你们产品和UI对你也忒好了吧。

遇到这种需求,如果项目不是很赶,可以自己用iframe来做,如果项目比较赶的话,就可以使用jquery-form.js插件来实现,方便快捷。

一、举个栗子

1.先下载 JQuery-form.js文件并引入,也可以使用CDN,因为是jquery插件,所以需要先引入jquery。

2.html 部分:

<form action='' enctype="multipart/form-data" method="post" name="fileForm"> 
<input type="file" class="file" name="filename"> 
</form> 
<button class="btn btn-primary" onclick="subimtBtn();">提交</button> 

3.js部分:

function subimtBtn() { 
 var form = $("form[name=fileForm]"); 
 var options = {  
 url:'/upload', //上传文件的路径  
 type:'post',
 success:function(data){  
  console.log(data); 
  //....       //异步上传成功之后的操作
  }
 };  
 form.ajaxSubmit(options); 
} 

这样异步上传就完成了,至于后台对上传的文件的获取,跟前台直接提交表单上传文件的方法是一样的。

二、进一步

​ 还没完呢,上面的例子是直接点击的type=file的input异步上传的,可是大家都知道默认的type=file的input框是很难看的,而且无法自定义样式,这个时候,要想做好看,就需要UI提供一个点击上传文件的图,然后把input隐藏,在点击图片的时候,再用js触发input选择文件,然后再点击提交按钮异步上传。嗯,道理上是这样的,然而是要兼容IE 8的呀亲,不信你在IE8 下面跑跑看,一个 “XXX拒绝访问”的大错误赤裸裸的躺在那儿。

​ 其实这个问题呢,是由于IE的安全机制造成的,对于低版本的IE浏览器来说,如果click事件不是直接穿透到input[type=file]元素上的,那么就会禁止提交,所以你用js触发的input选择文件自然就行不通了。

解决方法:使用label元素。

只需要把上面的form标签里的内容改成下面这样:

<label for="upload">
 <img src="upload.png">
</label>
<input type="file" id="upload" class="file" name="filename" style='display:none'> 

啊,不对,上面的写法依然不能兼容IE 8,再改改:

<label for="upload">
 <input type="file" id="upload" class="file" name="filename" style='opacity:0;filter:alpha(opacity=0);'> 
</label>  

嗯,就是这样,至于那个好看的点击上传的图片,就作为label元素的背景吧。

相信我,这样真的可以了,兼容IE 8完全没问题。

三、更进一步

可能你还需要判断一下上传的文件类型啥的,比如只让上传excel文件,那请这样写:

$(".file").bind("change",function(){ 
  var fileType = $(this).val().substring($(this).val().lastIndexOf(".") + 1);
  if(fileType != "xls" && fileType != "xlsx"){
    alert("只能上传excel文件");
  }
}); 

四、小结

嗯,也没啥可小结的,其实form.js是一个全,面支持表单的jQuery插件,有很多表单相关的给你,本篇只是介绍了其中一种功能的用法而已,其他更多的用法,请参照https://github.com/jquery-form/form官方文档。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅谈struts1 & jquery form 文件异步上传
  • jQuery实现jQuery-form.js实现异步上传文件

相关文章

  • jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
  • 浅谈jQuery添加的HTML,JS失效的问题
  • jQuery实现自动输入email、时间和域名的方法
  • jquery的父子兄弟节点查找示例代码
  • jQuery EasyUI Tab 选项卡问题小结
  • jQuery prototype冲突的2种解决方法(附demo示例下载)
  • 判断浏览器的内核及版本号方法汇总
  • 40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
  • jqgrid 简单学习笔记
  • JQuery 构建客户/服务分离的链接模型中Table中的排序分析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • JQuery触发事件例如click
    • 基于jquery自定义图片热区效果
    • 浅谈jQuery hover(over, out)事件函数
    • jquery对所有input type=text的控件赋值实现方法
    • 基于jQuery实现以手风琴方式展开和折叠导航菜单
    • jQuery.ajax向后台传递数组问题的解决方法
    • JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
    • jQuery中值得注意的trigger方法浅析
    • jquery 跨域访问问题解决方法(笔记)
    • 在jquery中的ajax方法怎样通过JSONP进行远程调用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有