`
JavaSam
  • 浏览: 951917 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

2008-08-29 08:11 使用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. }   

var Upload = { clear: function(id){ var up = (typeof id=="string")?document.getElementById(id):id; if (typeof up != "object") return null; var tt = document.createElement("span"); tt.id = "__tt__"; up.parentNode.insertBefore(tt,up); var tf = document.createElement("form"); tf.appendChild(up); document.getElementsByTagName("body")[0].appendChild(tf); tf.reset(); tt.parentNode.insertBefore(up,tt); tt.parentNode.removeChild(tt); tt = null; tf.parentNode.removeChild(tf); }, clearForm: function(){ var inputs,frm; if (arguments.length == 0) { inputs = document.getElementsByTagName("input"); }else{ frm = (typeof arguments[0] == "string")?document.getElementById(arguments[0]):arguments[0]; if (typeof frm != "object") return null; inputs = frm.getElementsByTagName("input"); } var fs=[]; for ( var i=0; i<inputs.length; i++ ) { if (inputs[i].type == "file") fs[fs.length] = inputs[i]; } var tf = document.createElement("form"); for ( var i=0; i<fs.length; i++ ) { var tt = document.createElement("span"); tt.id = "__tt__" + i; fs[i].parentNode.insertBefore(tt, fs[i]); tf.appendChild(fs[i]); } document.getElementsByTagName("body")[0].appendChild(tf); tf.reset(); for ( var i=0; i<fs.length; i++) { var tt = document.getElementById("__tt__" + i); tt.parentNode.insertBefore(fs[i],tt); tt.parentNode.removeChild(tt); } tf.parentNode.removeChild(tf); } }

 

这个方法使用示例:

 

  

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>
分享到:
评论

相关推荐

    js 获取、清空input type="file"的值示例代码

    ### JavaScript获取和清空input type="file"值的知识点 #### 1. 获取input type="file"的值 `&lt;input type="file"&gt;`元素允许用户选择一个或多个文件,这些文件的路径将通过其`value`属性返回。然而,需要注意的是,...

    js 获取、清空input type=file的值(示例代码)

    首先,我们来看如何获取`&lt;input type="file"&gt;`的值。当用户选择了一个文件后,这个文件的信息会存储在`value`属性中,但这个属性是只读的,无法直接通过`value=""`来清空。下面是一个简单的示例,展示如何获取用户...

    JS清空上传控件input(type=file)的值的代码第1/2页

    在JavaScript中,清除`&lt;input type="file"&gt;`控件的值是一个相对复杂的问题,因为浏览器出于安全考虑,不允许直接修改或清空该类型的输入字段。通常,当用户选择了一个文件后,无法通过简单的JavaScript操作来重置这...

    JS清空上传控件input(type=&quot;file&quot;)的值的代码第1/2页

    在进行Web开发的过程中,经常会遇到需要通过JavaScript清空`&lt;input type="file"&gt;`上传控件中的文件选择值的需求。然而,根据HTML标准,`&lt;input type="file"&gt;`控件的值是不允许通过JavaScript直接进行修改的。原因...

    ASP.Net中FileUpLoad控件内容清空

    当用户点击按钮触发事件时,可以利用JavaScript删除原有的`&lt;input type="file"&gt;`元素,并重新创建一个新的`&lt;input type="file"&gt;`元素来替代它,从而达到清空文件选择的效果。 示例代码如下: ```html &lt;span id=...

    js 获取、清空input type=&quot;file&quot;的值(示例代码)

    在JavaScript中,`&lt;input type="file"&gt;`控件用于让用户选择本地文件,然后上传到服务器。这个控件有一些特殊性,比如其`value`属性是只读的,这意味着我们不能直接通过设置`value`来清空用户选择的文件。这是因为...

    清空上传控件input file的值

    这种方法虽然能有效清空`&lt;input type="file"&gt;`的值,但请注意,这样做并不会真正删除用户已选择的文件,只是从视觉上清空了控件。如果需要在用户重新选择文件之前阻止旧文件的上传,你需要在提交表单或发送文件到...

    解析使用JS 清空File控件的路径值

    在网页开发中,File控件(`&lt;input type="file"&gt;`)经常用于用户选择本地文件上传至服务器。然而,由于安全原因,浏览器通常不允许JavaScript直接修改File控件的value属性,以防止恶意脚本篡改用户选定的文件。本文将...

    input file的默认value清空与赋值方法

    由于出于安全性考虑,JavaScript默认不允许直接修改`input`元素中的`file`类型的value值。但是,我们仍然有一些技巧性的方法可以用来实现这一目标。 首先,我们来看一下传统的方法,即通过替换HTML代码的方式。这种...

    HTML上传控件取消选择

    在HTML中,`&lt;input type="file"&gt;`控件用于让用户选择本地文件进行上传,它在网页表单中扮演着重要角色。然而,在某些场景下,我们可能需要取消用户已经选择的文件,例如用户错误地选择了文件或者在上传之前想要重新...

    使用JS 清空File控件的路径值

    在网页开发中,File输入控件(`&lt;input type="file"&gt;`)是用户选择本地文件的一种常见方式。然而,由于浏览器的安全策略,JavaScript通常不能直接访问或修改File控件的选定文件路径,这是为了保护用户的隐私。但在...

    清空input类型为file的value属性值的方法

    代码示例使用了JavaScript来清空一个`file`类型的`&lt;input&gt;`元素的值。方法如下: 1. 通过`document.getElementById("myfile")`获取到`&lt;input&gt;`元素的DOM对象。这里的`myfile`应该是该`&lt;input&gt;`元素的id属性值。 2. ...

    web组建开发指南

    - **File上传标签**:通过`&lt;input type="file"&gt;`标签实现文件上传功能,通常还需要后端服务的支持来接收和处理上传的文件。 - **Label标签**:使用`&lt;label&gt;`标签来为表单控件创建关联的文字说明,增强表单的可访问...

    js清除input中type等于file的值域(示例代码)

    本文将通过示例代码介绍如何使用JavaScript来清空`input`元素中`type`属性值为`file`的值。 首先,要清楚的是,`&lt;input type="file"&gt;`元素的值是由浏览器自动管理的。我们不能直接通过JavaScript设置这个值为空字符...

    表单的基本使用1

    - **文件上传**(File input):`&lt;input type="file"&gt;`,如`&lt;input type="file" name="pic" /&gt;`,允许用户从本地选择一个文件上传。 - **文本区域**(Textarea):`&lt;textarea&gt;`,如`&lt;textarea rows="5" cols="30"&gt;...

    bootstrap-fileinput使用例子

    var element = '&lt;input id="test" name="insect_file" type="file" multiple class="file-loading" data-show-caption="true"/&gt;'; $("#div_insect_file").append(element); // 将 input 插入到容器中 ``` 3. **...

    文件上传代码C#版ASP.NET

    - `&lt;input type="file"&gt;`:HTML中的文件输入控件,允许用户选择一个或多个文件进行上传。 - `enctype="multipart/form-data"`:设置表单的编码类型为`multipart/form-data`,这是必须的,因为它能够正确地传输文件...

Global site tag (gtag.js) - Google Analytics