2017-01-04 17 views
2

ファイルをアップロードするためにユーザーがファイル入力をクリックしたときに検出するこのコードがあります。ファイルがファイル入力にドラッグされたときの検出

$('input:file').click(function() { 
    // do stuff here 
}); 

私は多くのユーザーがファイルをアップロードするファイル入力にファイルをドラッグしている、そしてそれが起こるとき、これがトリガされていないことを発見しました。私はmouseupと組み合わせてmouseoverと考えていましたが、その間にユーザーがファイルを保持していたかどうかわかりません。

明確にするために、ドラッグアンドドロップを実装する手助けは必要ありません。また、可能であれば、私はファイル入力を使い続け、divなどの他の要素へのドロップを含む解決策は使用しません。実際のファイル入力にドロップを残しておきたい。

ファイル入力にドラッグされているファイルを検出して、対応できるようにするにはどうすればよいですか?

+0

あなたは 'mousemove()'を使ってポインタの位置を取得しようとしましたか? https://api.jquery.com/mousemove/ – elementzero23

+0

このページを試すhttp://www.w3schools.com/html/html5_draganddrop.asp –

+0

@GôTôは要素上でドラッグを実装する方法です。ユーザーは要素をドラッグしていないので、ブラウザのファイルをドラッグしているので、これは私が必要としているようには見えません。また、w3schoolsはちょうどひどい、不完全で、しばしば誤解を招く。 – Goose

答えて

2

は、あなたはあなたがドラッグが発生し、このイベントのあなたの行動時に監視したい領域のみを定義する必要がdragenterdragleave

container.addEventListener("dragenter", this.dragenter, true); 
container.addEventListener("dragleave", this.dragleave, true); 

のようにブラウザのネイティブドラッグイベントに反応することができます。

+0

私は必要なもののように見えますが、私の試行はうまくいかず、最新の質問を見てどのように私がそれを適用しようとしたかを見てください。 – Goose

+0

これはこのフィドルで動作するようです。 https://jsfiddle.net/3fnatryv/ AddEventListenerはネイティブブラウザイベントですので、jQuery検索からDOM要素を取得する必要があります。私は最初の要素を使用する[0] – VadimB

+0

ああ、私は参照してください。ありがとう! – Goose

関連する問題