2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【jQuery】ファイルダイアログを起動するプラグイン【JavaScript】

Last updated at Posted at 2017-09-13

#ファイルダイアログを好きなタイミングで起動したい方へ
ファイルを選択させたいだけなのに<input type="file">って書くの嫌ですよね。
おまけに見た目もカッコ悪いし。
無題.png

そんなあなたにお勧めなのがjquery.filedialog.js!
あなたが実装するのは、ファイルが選択された時の処理だけです!

#使い方
① まずこちらよりjquery.filedialog.jsをダウンロード

② 次にscriptタグで読み込む。(jqueryの後に読み込んでください。)

<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/jquery.filedialog.js"></script>

③ 好きなタイミングで、$.file.open({onChange: function() {...}})メソッドを呼ぶ。


$(document).mousedown(function() {
	$.fileDialog.open({
		accept: '.png',
		onChange: function(files) {
			// ここに処理を書く			 
		}
	});		
});

④ ファイルダイアログでユーザーがファイルを選択したときに、onChangeが呼ばれる。
#openメソッド

openメソッドの引数は、

{
  accept: '.png',
  onChange: function(files) {  /* ここに処理を書く */ }
}

てな感じでオブジェクトを渡してください。

acceptについては、こちらを参照してください。acceptは省略可能です。

onChangeの引数はfilesです。1つ目のファイルを処理したい場合、files[0]としてください。

#clearメソッド

このメソッドは呼ばなくても基本大丈夫ですが、
ファイルダイアログが開かれてcancelされた時に、
非表示の<input type="file">が残ってしまいます。
clearメソッドはそれを削除します。

#ソース

$.fileDialog = (function() {
	var _FILE_ID = 'jqueryFileDialogPlugin',

	_open = function(option) {
		if(!option) { throw 'argument is invalid'; }
		_clear();
	    $('<input>')
	    .prop({ 
	    	type: 'file',
	    	id: _FILE_ID,
	    	accept: option.accept
	    })
	    .css({ display: 'none' })
	    .appendTo($('body'));

	    $('#' + _FILE_ID).trigger('click');
	    $('#' + _FILE_ID).on('change', function() {
	    	if(option.onChange) {
	    		option.onChange($('#' + _FILE_ID).prop('files'));
	    	}
	    	_clear();
	    });
	},

	_clear = function() {
		$('#' + _FILE_ID).off('change');
		if($('#' + _FILE_ID).length) { $('#' + _FILE_ID).remove(); }
	};

	return {
		open: _open,
		clear: _clear
	};
}());

#最後に
本プラグインは自由に使ってもらって大丈夫です。
著作権は放棄します。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?