ページにファイルアップロードボックスとクリアボタンがあります。クリアボタンを押すと、ファイルアップロードボックスのテキストがクリアされます。
以下はFirefoxで機能しますが、IE(テキストはそこに残ります)では機能しません)。これに対する回避策はありますか?
$("#clear").click( function() {
$("#attachment").val("");
//document.myform.attachment.value = "";
})
HTML:
<form name="myform">
<input type="file" name="attachment" id="attachment" />
</form>
<br /><button id="clear">Clear Attachment</button>
IE8以降 では読み取り専用なので、クリアできません。このセキュリティ機能を回避する最も簡単な方法は、要素をコピーに置き換えることです。
編集同じアプローチを示唆するこれに対する以前の答えを見つけました! jQueryを使用して<input type = 'file' />をクリアする
私が見つけた解決策の1つは、単に次のことを行うことです。
document.getElementById( 'myUploadField')。parentNode.innerHTML = document.getElementById( 'myUploadField')。parentNode.innerHTML;
動作しないはずのようですが、動作します。
このソリューションは、入力要素のクローンを作成するよりも洗練されています。要素の周りに<form>
をラップし、フォームでresetを呼び出してから、unwrap()を使用してフォームを削除します。上記のclone()ソリューションとは異なり、最後に同じ要素が表示されます(それに設定されたカスタムプロパティを含む)。
Opera、Firefox、Safari、ChromeおよびIE6 +でテストおよび動作しています。type= "hidden"を除く他のタイプのフォーム要素でも動作します。
function reset(e) {
e.wrap('<form>').closest('form').get(0).reset();
e.unwrap();
}
これは私のために働いた:
$("input[type='file']").replaceWith($("input[type='file']").clone(true));
以下の方法で入力ファイルをクリアしてみてください。
<script>
function clearFileInputField(tagId) {
document.getElementById(tagId).innerHTML =
document.getElementById(tagId).innerHTML;
}
</script>
<div id="uploadFile_div">
<input type="file" class="fieldMoz" id="uploadFile" onkeydown="return false;" size="40" name="uploadFile"/>
</div>
<a onclick="clearFileInputField('uploadFile_div')" href="javascript:noAction();">Clear</a>`
昔ながらの<input type="reset" value="clear this">
を使用する