<input type="file"/>
クロムの「ファイルを選択」モーダルウィンドウでキャンセルをクリックした後、ファイルとパスがクリアされ、キャンセルされた後もIEファイルは変更されません。クロームでこの動作を変更する方法はありますか?入力タイプ= "ファイル"、クロムキャンセルをクリックした後にファイルをクリアする
答えて
これはボタンcancel
がクリックされたときにも、検出することはできませんあなたの質問への答えである:クロームは削除することはできませんように、ここで
セキュリティ上の理由から不可能です、あなたはjsファイル入力の値を設定することはできません – Powerslave
https://jsfiddle.net/dqL97q0b/1/
は、周りの仕事ですキャンセルが押されたときのユーザーの既存ファイル。
コードノート: 既にファイルが選択されている場合、ユーザーがファイル選択を開くと、これによりDomエレメントのクローンが作成されます。 次に、ユーザーがクロムでキャンセルをクリックすると、変更イベントリスナーが発生し、その値が ""になるため、その特定のケースでは空のファイルチューザを削除してクローンを復元します。
注:各ファイル選択ツールのDomエレメントには固有のIDが必要です。そのため、クローンを適切に格納および検索できるようになります。
注:コードのほとんどは、物事がどのように動作するかを示すために、ログインしている、特に私は、このような、その後のonclick =「fileClicked(イベント)」としてあなたはDOM要素にインラインイベントリスナーを使用している場合ことを強調するために望んでいましたイベントリスナーをクローンに再接続する必要はありません。
<!doctype html><html><head></head><body>
<h2>Fix for Chrome Removing File when 'cancel' clicked</h2>
Upload Image: <input id="imageUpload" type="file" onclick="fileClicked(event)" onchange="fileChanged(event)">
<br/><br/>
<label for="videoUpload">Upload Video:</label> <input id="videoUpload" type="file" onclick="fileClicked(event)" onchange="fileChanged(event)">
<br/><br/>
<div id="log"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
//This is All Just For Logging:
var debug = true;//true: add debug logs when cloning
var evenMoreListeners = true;//demonstrat re-attaching javascript Event Listeners (Inline Event Listeners don't need to be re-attached)
if (evenMoreListeners) {
var allFleChoosers = $("input[type='file']");
addEventListenersTo(allFleChoosers);
function addEventListenersTo(fileChooser) {
fileChooser.change(function (event) { console.log("file(#" + event.target.id + ") : " + event.target.value.split("\\").pop()) });
fileChooser.click(function (event) { console.log("open(#" + event.target.id + ")") });
}
}
var clone = {};
// FileClicked()
function fileClicked(event) {
var fileElement = event.target;
if (fileElement.value != "") {
if (debug) { console.log("Clone(#" + fileElement.id + ") : " + fileElement.value.split("\\").pop()) }
clone[fileElement.id] = $(fileElement).clone(); //'Saving Clone'
}
//What ever else you want to do when File Chooser Clicked
}
// FileChanged()
function fileChanged(event) {
var fileElement = event.target;
if (fileElement.value == "") {
if (debug) { console.log("Restore(#" + fileElement.id + ") : " + clone[fileElement.id].val().split("\\").pop()) }
clone[fileElement.id].insertBefore(fileElement); //'Restoring Clone'
$(fileElement).remove(); //'Removing Original'
if (evenMoreListeners) { addEventListenersTo(clone[fileElement.id]) }//If Needed Re-attach additional Event Listeners
}
//What ever else you want to do when File Chooser Changed
}
</script>
</body></html>
シンプルで効果的なソリューション:変数内のファイルへの参照を保持します。入力の変更イベントは、あなたがチェック発射されるたびに:
if(input.files[0]) // truthy, falsey
{
var file = input.files[0];
}
のでfile
最新の選択したファイルが含まれていますし、ユーザーがダイアログを開きますが、ファイルの参照を相殺するときに変更し、まだ以前に含まれることはありません選択されたファイル。
- 1. 入力タイプ=ファイル
- 2. $( "#frm_data")[0] .reset();入力タイプをクリアできません= ajaxレスポンス後のファイル値
- 3. クリックでファイルをクリアする
- 4. 入力タイプ= "ファイル"のイベントをキャンセルする
- 5. "クリア"ボタンをクリックしてフィルタをクリアした後にデータテーブルをリフレッシュする方法
- 6. モバイルデバイス上のマルチフォーム:ファイル入力をクリックした後に表示されるコントロールアクション
- 7. フォーム入力後に複数の入力タイプの 'ファイル'フィールドが空になる
- 8. ファイル入力をクリックした後にファンシーボックスが閉じています
- 9. アイテムオートコンプリートをクリックした後でフォーカスをクリア
- 10. 別のテキストをクリアした後にテキスト入力フィールドをクリアする
- 11. JQueryでカスタマイズされたファイル入力をクリアする方法
- 12. JavaScriptを入力タイプ= "ファイル"に添付するファイル
- 13. vue.js:選択した後に入力値をクリアするvue-multiselect
- 14. Ember.jsの入力タイプ= "ファイル"
- 15. 入力タイプ= "ファイル"のスタイリング
- 16. 入力タイプ=ファイルは、Firefox
- 17. スタイリング入力タイプ= "ファイル"とボックスシャドウ
- 18. 入力タイプ=「ファイルは」のMacBook
- 19. は提出入力タイプをクリックした後、円を削除する(ブートストラップ)
- 20. クリックイベント後の入力値をクリアする
- 21. 内容を追加した後の入力値をクリアする
- 22. krejeeファイル入力のボタンをクリックした後のプレビュー画像を変更
- 23. IE7-8:入力タイプ=「ファイル」と同じ高さの「クリア」ボタンボタンを「参照」
- 24. 入力タイプのファイルをクリックしたときにフォーム内のすべてのIDを取得する方法
- 25. 入力タイプのファイルがPPSファイルを表示しないaccept
- 26. 入力[タイプ=ファイル]が空の値に
- 27. 入力タイプ= "ファイル" - 拡張子なしのファイルを受け入れる
- 28. ファイル入力のonchangeイベント後にファイルをアップロードする方法
- 29. ファイル入力にファイルを入力
- 30. 入力タイプの検証= onBlurを使用したファイル
フィドルを作成して、正確に何を表示できますか?ありがとう:) – GFP