js动态在form上插入enctype=multipart/form-data的问题


Posted in Javascript onMay 24, 2012

我们都知道要让form能提交文件,需要在form上指定enctype=multipart/form-data的attribute,这样才能上传文件,关于enctype的文章很多,就不再做解释。

问题是因为使用了MVC的Html.BeginForm()来输出表单代码,默认是没有加入enctype的,

@using (Html.BeginForm()) { 
}

在PartialView中有一个<input type="file" />用来上传文件,又不想为了这个PartialView去修改父页面的Html.BeginForm(),我的做法是在PartialView中用脚本来为form加入enctype:
$(function(){ 
$('#file').parents('form').attr('enctype', 'multipart/form-data'); 
});

最近的主流浏览器都测试通过没问题,唯独IE的几个旧版本出问题,试了手工在Html.BeginForm()中加入enctype是可以解决问题的,说明问题出在以上的脚本。多方查找终于发现出题出现在于IE6,7,8不支持直接attr('enctype', 'multipart/form-data'),而是设置dom属性encoding='multipart/form-data',最终的脚本代码修改为:
$(function () { 
$('#file').parents('form').attr('enctype', 'multipart/form-data').get(0).encoding = 'multipart/form-data'; 
});
Javascript 相关文章推荐
jQuery方法简洁实现隔行换色及toggleClass的使用
Mar 15 Javascript
JQuery.Ajax之错误调试帮助信息介绍
Jul 04 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
Dec 26 Javascript
Underscore.js 1.3.3 中文注释翻译说明
Jun 25 Javascript
jQuery实现下滑菜单导航效果代码
Aug 25 Javascript
JS实现网页Div层Clone拖拽效果
Sep 26 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
Feb 12 Javascript
Vue中的v-cloak使用解读
Mar 27 Javascript
jQuery DOM节点的遍历方法小结
Aug 15 jQuery
教你如何编写Vue.js的单元测试的方法
Oct 17 Javascript
vue自定义switch开关组件,实现样式可自行更改
Nov 01 Javascript
javascript中关于break,continue的特殊用法与介绍
May 24 #Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
May 24 #Javascript
JavaScript之编码规范 推荐
May 23 #Javascript
javascript的数据类型、字面量、变量介绍
May 23 #Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
May 23 #Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 #Javascript
JavaScript基础语法让人疑惑的地方小结
May 23 #Javascript
You might like
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
node内置调试方法总结
2018/02/22 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
python实现统计代码行数的方法
2015/05/22 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
python实现五子棋小程序
2019/06/18 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
Python中生成ndarray实例讲解
2021/02/22 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
高三励志标语
2014/06/05 职场文书
离婚协议书样本
2015/01/26 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
python实现语音常用度量方法的代码详解
2021/05/25 Python
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python