`
liuwei1981
  • 浏览: 755513 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:156916
社区版块
存档分类
最新评论

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

阅读更多

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

 

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

 

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

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

  

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); 
} 
} 

 

这个方法使用示例:

 

  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>test</title> 
<script type="text/javascript"> 
<!--引入以上js代码--></script> 
</head> 

<body> 
<form name="testform"  method="post"> 
<input type="file" name="testfile" /> 
<input type="button" value="clear" onclick="Upload.clear('testfile')" /><br /> 
<input type="button" value="clearAll" onclick="Upload.clearForm()" /><br /> 
<input type="submit" value="submit" /><input type="reset" value="reset" /> 
</form> 
</body> 
</html> 

 

 

分享到:
评论
2 楼 gkbusy 2010-03-20  
参考
http://hi.baidu.com/%C6%AE%CF%E3%D7%D4%C8%BB/blog/item/2a05e01676496a13972b43b8.html
这个帖子的两个方法

没有LZ的代码那么复杂
思路无法是动态创建form,再做reset
或者简单点,将type=file的input嵌套在一个<span>或<div>中,删除掉,再往这个<span>或<div>中动态加入同名的type=file的input就OK了
1 楼 junjunyanyan 2009-06-12  
运行了,发现了个小问题,就是在HTML标签里的
# <input type="file" name="testfile" id="testfile" />
注:红色部分为添加的东西,有了它就能正常了,至少我这里是这样,但我知道javascript这东西难说,^_^.最后谢谢楼主分享,刚好有用!!!1

相关推荐

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

    上传控件(&lt;input type=”file”/&gt;)用于在客户端浏览并上传文件,用户选取的路径...js 获取&lt;intput type=file&gt;的值 代码如下:&lt;html&gt;[removed] function show(){ var p=document.getElementById(“file

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

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

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

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

    清空上传控件input file的值

    清空上传控件input file的值的代码

    HTML上传控件取消选择

    input type=”file” id=”fileupload” name=”file” /&gt;  第一种: (display:none时不能用) 代码如下:var obj = document.getElementById(‘fileupload’) ; obj.select(); document.execCommand(“delete...

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

    开发环境vs2005,在上传文件时,需要一个取消的按钮来清空type=file的value,而且这个页面上有多个file控件 这个比较麻烦因为file的值本身是不允许用脚本修改的(安全角度考虑) 方法1).使用脚本把这个file的input移动到...

    js使用小技巧

    Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode ...

    LayuiForm表单.txt

    form表单元素包括:text 文本输入框,password密码输入框,checkbox复选框,radio单选框,file 文件域,submit表单提交action指向的文件,reset表单清空,image图片提交按钮,button按钮,hidden隐藏域。 select ...

    如何将一个TXT文档里内容导入到文本框里

    //清空上传域file document.getElementById('FileName').select(); document.selection.clear(); } }else{ alert("error"); } } } //打开连接,true表示异步提交 xmlhttp.open("post", "ajax_txt_save....

    ASP.NET程序中常用的三十三种代码.txt

     不要使用Response.Redirect,而应该使用Server.Transfer  e.g // in global.asax protected void Application_Error(Object sender, EventArgs e) { if (Server.GetLastError() is HttpUnhandledException) Server...

    ASP.NET常用代码

    不要使用Response.Redirect,而应该使用Server.Transfer e.g // in global.asax protected void Application_Error(Object sender, EventArgs e) { if (Server.GetLastError() is HttpUnhandledException) Server....

    c# 加密和解密相关代码

    添加一个Button 控件,用来使用MD5算法对输入的数据进行加密。 (3)程序主要代码如下: public string Encrypt(string strPwd) { MD5 md5 = new MD5CryptoServiceProvider(); //创建MD5 对象 byte[] data = System....

    KODExplorer 芒果云-资源管理器

    - 采用全新上传控件,跟安全,更好的体验。 - 拖拽支持文件夹,多个文件。上传自动过滤不允许的文件类型 - 拖拽上传 和上统一优化,修复webuploader的文件判断;火狐拖拽上传,ie9+拖拽上传。 - 上传时自动过滤不合格...

Global site tag (gtag.js) - Google Analytics