使用JS清空上传控件input(type="file")的值

 最近做的一个小功能,需要清空<input type="file">的值,但上传控件<input type="file">的值不能通过JavaScript来修改。

 

google找到这样一个解决方法:

 

   在上传控件中插入了值,就只能通过form的reset功能来清空了,但是form里面其他的值也被reset了。
 

   既然可以使用form的reset清空,那就有办法了:新建一个临时form,然后将需要清空的上传控件移入其中,reset之后,再移回原来所在位置,最后删除创建的临时form。js代码:

  

Js代码 复制代码
  1. var Upload = {    
  2. clear: function(id){    
  3. var up = (typeof id=="string")?document.getElementById(id):id;    
  4. if (typeof up != "object"return null;    
  5. var tt = document.createElement("span");    
  6. tt.id = "__tt__";    
  7. up.parentNode.insertBefore(tt,up);    
  8. var tf = document.createElement("form");    
  9. tf.appendChild(up);    
  10. document.getElementsByTagName("body")[0].appendChild(tf);    
  11. tf.reset();    
  12. tt.parentNode.insertBefore(up,tt);    
  13. tt.parentNode.removeChild(tt);    
  14. tt = null;    
  15. tf.parentNode.removeChild(tf);    
  16. },    
  17.   
  18. clearForm: function(){    
  19. var inputs,frm;    
  20. if (arguments.length == 0)    
  21. {    
  22. inputs = document.getElementsByTagName("input");    
  23. }else{    
  24. frm = (typeof arguments[0] == "string")?document.getElementById(arguments[0]):arguments[0];    
  25. if (typeof frm != "object"return null;    
  26. inputs = frm.getElementsByTagName("input");    
  27. }    
  28.   
  29. var fs=[];    
  30. for ( var i=0; i<inputs.length; i++ )    
  31. {    
  32. if (inputs[i].type == "file") fs[fs.length] = inputs[i];    
  33. }    
  34.   
  35. var tf = document.createElement("form");    
  36. for ( var i=0; i<fs.length; i++ )    
  37. {    
  38. var tt = document.createElement("span");    
  39. tt.id = "__tt__" + i;    
  40. fs[i].parentNode.insertBefore(tt, fs[i]);    
  41. tf.appendChild(fs[i]);    
  42. }    
  43. document.getElementsByTagName("body")[0].appendChild(tf);    
  44. tf.reset();    
  45. for ( var i=0; i<fs.length; i++)    
  46. {    
  47. var tt = document.getElementById("__tt__" + i);    
  48. tt.parentNode.insertBefore(fs[i],tt);    
  49. tt.parentNode.removeChild(tt);    
  50. }    
  51. tf.parentNode.removeChild(tf);    
  52. }    
  53. }   

 

这个方法使用示例:

  

Html代码 复制代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
  2. <html xmlns="http://www.w3.org/1999/xhtml">    
  3. <head>    
  4. <title>test</title>    
  5. <script type="text/javascript">    
  6. <!--引入以上js代码--></script>    
  7. </head>    
  8.   
  9. <body>    
  10. <form name="testform"  method="post">    
  11. <input type="file" name="testfile" />    
  12. <input type="button" value="clear" onclick="Upload.clear('testfile')" /><br />    
  13. <input type="button" value="clearAll" onclick="Upload.clearForm()" /><br />    
  14. <input type="submit" value="submit" /><input type="reset" value="reset" />    
  15. </form>    
  16. </body>    
  17. </html>   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值