8

infile を使用して、ユーザーにマシン上のファイルを参照するように依頼しています。ファイルを選択せず​​にウィンドウを閉じた場合にキャッチする方法はありますか?
たとえば、x をクリックした場合。

<input type="file" name="data" id="inFile" size="15" style="display:none" onchange="handleFiles(this)"/>

ありがとう

4

3 に答える 3

2

同じファイルを選択しても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)
}
于 2012-08-26T19:41:27.963 に答える
-1

私がしたことは次のとおりです。ユーザーがウィンドウを開いた後にタイマーを開始し、その時間指定機能で、ファイルがブール変数で選択されているかどうかを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);
    }   
}
于 2012-08-23T17:02:42.013 に答える
-2

私はblurイベントがそれを行うと思います:

<input
  type="file"
  onchange="changed=true; handleFiles(this)"
  onblur="if(!changed) alert('nothing selected'); changed=false;"
/>
于 2012-08-22T21:27:56.977 に答える