jQuery を使用してコントロール値をクリアすることは可能ですか<input type='file' />
? 次のことを試しました:
$('#control').attr({ value: '' });
しかし、それは機能しません。
ベストアンサー1
簡単です。要素を で囲み<form>
、フォームで reset を呼び出し、 を使用してフォームを削除します.unwrap()
。.clone()
このスレッドの他のソリューションとは異なり、最後には同じ要素 (設定されたカスタム プロパティを含む) が残ります。
Opera、Firefox、Safari、Chrome、IE6+ でテスト済みで動作します。 を除く他の種類のフォーム要素でも動作しますtype="hidden"
。
window.reset = function(e) {
e.wrap('<form>').closest('form').get(0).reset();
e.unwrap();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input id="file" type="file">
<br>
<input id="text" type="text" value="Original">
</form>
<button onclick="reset($('#file'))">Reset file</button>
<button onclick="reset($('#text'))">Reset text</button>
Timo が以下で述べているように、 内にフィールドのリセットをトリガーするボタンがある場合は、 が送信をトリガーするのを防ぐために イベントを<form>
呼び出す必要があります。.preventDefault()
<button>
編集
未修正のバグのため、IE 11 では動作しません。入力時にテキスト (ファイル名) はクリアされますが、File
リストはそのまま残ります。