如何用JS清空上傳控制項input(type="file")的值

來源:互聯網
上載者:User
關鍵字 網頁製作 Ajax JavaScript

var obj=網頁中的<input type="file" />
obj.outerhtml = obj.outerhtml.replace(/(value=").+"/i, "$1"");

更經典的方法

需要清空<input type="file">的值,但上傳控制項<input type="file">的值不能通過網頁特效來修改。

google找到這樣一個解決方法:


在上傳控制項中插入了值,就只能通過form的reset功能來清空了,但是form裡面其他的值也被reset了。

既然可以使用form的reset清空,那就有辦法了:新建一個臨時form,然後將需要清空的上傳控制項移入其中,reset之後,再移回原來所在位置,最後刪除創建的臨時form。 網頁特效代碼:

網頁特效代碼


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&lt;inputs.length; i++ )   


{   


if (inputs[i].type == "file") fs[fs.length] = inputs[i];   


}   


  


var tf = document.createelement("form");   


for ( var i=0; i&lt;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&lt;fs.length; i++)   


{   


var tt = document.getelementbyid("__tt__" + i);   


tt.parentnode.insertbefore(fs[i],tt);   


tt.parentnode.removechild(tt);   


}   


tf.parentnode.removechild(tf);   


}   


}

var upload = {  clear: function(id){  var up = (typeof id=="string")?document.getelementbyid(id):id;  i f (typeof up != "object") return null;  var tt = document.createelement("span");  tt.id = "__tt__";  up.par entnode.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.getelements bytagname("input");  }else{  frm = (typeof arguments[0] == "string")?document.getelementbyid(arguments[0]): arguments[0];  if (typeof frm != "object") return null;  inputs = frm.getelementsbytagname("input");  }&nb sp;  var fs=[];  for ( var i=0; i<inputs.length; i++ )  {  if (inputs[i].type == "file") fs[fs.length] = inputs[i];  }   var tf = document.create element("form");  for ( var i=0; i<fs.length; i++ )  {  var tt = document.createelement("span");  t t.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代碼
<!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/網頁特效">   
<!--引入以上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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.