infile を使用して、ユーザーにマシン上のファイルを参照するように依頼しています。ファイルを選択せずにウィンドウを閉じた場合にキャッチする方法はありますか?
たとえば、x をクリックした場合。
<input type="file" name="data" id="inFile" size="15" style="display:none" onchange="handleFiles(this)"/>
ありがとう
infile を使用して、ユーザーにマシン上のファイルを参照するように依頼しています。ファイルを選択せずにウィンドウを閉じた場合にキャッチする方法はありますか?
たとえば、x をクリックした場合。
<input type="file" name="data" id="inFile" size="15" style="display:none" onchange="handleFiles(this)"/>
ありがとう
同じファイルを選択してもHTML入力ファイル選択イベントが発生しないという解決策があるので、これを使用できると思います。
<input type="file" name="data" id="inFile" />
var fileElem = document.getElementById("inFile");
var fileSelected = null;
fileElem.onclick = function(e) {
fileSelected = this.value;
this.value = null;
});
/* or use this in your browse() function:
fileElem.value = null;
*/
fileElem.onchange = function(e) { // will trigger each time
handleFileDialog(this.value === fileSelected);
};
function handleFileDialog(changed) {
// boolean parameter if the value has changed (new select) or not (canceled)
}
私がしたことは次のとおりです。ユーザーがウィンドウを開いた後にタイマーを開始し、その時間指定機能で、ファイルがブール変数で選択されているかどうかを0.5秒ごとに確認します。ユーザーがファイルを選択するか、HTML5 DnD が発生するとすぐにタイマーを停止します。これが誰かに役立つことを願っています。
<div id="uploader"><input type="file" name="data" id="inFile" size="15" style="display:none" onchange="handleFiles(this)"/></div>
<button dojoType="dijit.form.Button" id="fileSelect" type="button" onmouseup="browse();">Browse</button>
var fileselected = false;
function handleFiles(input){
fileselected = true;
//use input
}
var interval;
function browse(){
fileselected = false;
var fileElem = document.getElementById("inFile");
fileElem.click();
interval = setInterval(setdiv, 500);
}
function setdiv(){
if(!fileselected){
//do staff until user decides to Dnd or browse for file again
clearInterval(interval);
}
}
私はblur
イベントがそれを行うと思います:
<input
type="file"
onchange="changed=true; handleFiles(this)"
onblur="if(!changed) alert('nothing selected'); changed=false;"
/>