上传文件动态设置enctype

以下是最常见上传文件片段

  1. <form id="upform" name="upform" action="upload.php" method="post" enctype="multipart/form-data">
  2. <input type="file" name="uploadfile[]" />
  3. <input type="file" name="uploadfile[]" />
  4. <button type="submit" >upload</button>
  5. </form>
复制代码


有点js知识得人可能试图用js检查并控制enctype得类型

  1. form=document.getElementById('upform');
  2. if(form.getAttribute('enctype')!='multipart/form-data'){
  3.     form.setAttribute('enctype','multipart/form-data');
  4. }
复制代码

以上代码完全按照W3C格式
FF下运行良好 但是IE不兼容,其它浏览器可以不兼容,就IE不能不兼容
在看YUI类库时得到启发
IE中form没有enctype属性,只有encoding属性,那么以上代码改写为

  1. form=document.getElementById('upform');
  2. if(form.getAttribute('enctype')!='multipart/form-data'&&form.encoding!='multipart/form-data')
  3.   if(form.encoding){
  4.       form.setAttribute('encoding','multipart/form-data');
  5.   }else{
  6.       form.setAttribute('enctype','multipart/form-data');
  7.   }
  8. }
  9. //最外成if判断可以去掉 因为你是要设置它可以上传文件
复制代码

这样你可以试试这样得代码了

  1. <script type="text/javascript">
  2. function upload(form){
  3.   if(form.encoding){
  4.       form.setAttribute('encoding','multipart/form-data');
  5.   }else{
  6.       form.setAttribute('enctype','multipart/form-data');
  7.   }
  8.   form.setAttribute('method',post');
  9.   if(!form.getAttribue('action')){
  10.       form.setAttribute('action',location.href);
  11.   }
  12.   form.submit();
  13. }
  14. </script>
  15. <form action="upload.php" οnsubmit="try{upload(this);}catch(e){};return false;">
  16. <input type="file" name="uploadfile[]" />
  17. <input type="file" name="uploadfile[]" />
  18. <button type="submit" >upload</button>
  19. </form>
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值