input file类型的value清空

原文链接: http://www.cnblogs.com/diony/archive/2011/04/14/2015910.html

出于安全性考虑,JS是不能直接设置File的value值的,下面是我总结出来的方法:

第1个方法是大多人传统做法,替换HTML代码,楼上的已经用到了,我不过是用正则优化一下;

第2个方法利用SendKeys模拟键盘操作,需要允许浏览器调用ActiveX才行;

第3个方法,有点像武侠小说里的"乾坤大挪移"一样,呵呵,看看就知道了!

 
   
< html >

< head >

< title > 把input file類型的value清空 -- Test by 编程浪子 </ title >

< script >

function clearMethod1() {

var objFile
= document.getElementsByTagName_r( ' input ' )[ 0 ];

alert(
" \" " + objFile.value + " \"已清除 " );

objFile.outerHTML
= objFile.outerHTML.replace( / (value = \ " ).+\"/i, " $ 1 \ "" );

}

function clearMethod2() {

var objFile
= document.getElementsByTagName_r( ' input ' )[ 0 ];

alert(
" \" " + objFile.value + " \"已清除 " );

var WshShell
= new ActiveXObject( " WScript.Shell " );

objFile.focus();

objFile.createTextRange().select();

WshShell.SendKeys(
" {del} " );

}

function clearMethod3() {

var objFile
= document.getElementsByTagName_r( ' input ' )[ 1 ];

alert(
" \" " + objFile.value + " \"已清除 " ); objFile.value = "" ;

}

</ script >

< head >

< body >

< input type = " file " value = " C:\abc.txt " />< br />< br />

< button onclick = " clearMethod1(); " > 清除大法1:李代桃僵 </ button >< br />

< button onclick = " clearMethod2(); " > 清除大法2:暗渡陈仓 </ button >

< br />< br />< br />< br />< br />< br />< br />

< input type = " text " value = "" />< input type = " file " value = " C:\abc.txt " onchange = " this.previousSibling.value=this.value; " style = " width:20 " />< br />< br />

< button onclick = " clearMethod3(); " > 清除大法3:声东击西 </ button >

</ body >

< html >
只有方法1:李代桃僵可以用。
方法2:暗渡陈仓—>也许是我的环境不支持ActiveX。
方法3:声东击西—>有很大的问题,表面上看值清除了,实际上并没有清除,而且当再次选择文件时,如果所选文件与清除之前是同一文件,那么,text中是不会再显示文件路径的。
所以,还是
objFile.outerHTML=objFile.outerHTML.replace(/(value=\").+\"/i,"$1\"");
才是正解

转载于:https://www.cnblogs.com/diony/archive/2011/04/14/2015910.html

猜你喜欢

转载自blog.csdn.net/weixin_30693683/article/details/94797379
今日推荐