diff options
| author | Peter Lejeck <peter.lejeck@gmail.com> | 2013-11-01 01:53:17 +0100 |
|---|---|---|
| committer | Peter Lejeck <peter.lejeck@gmail.com> | 2013-11-01 01:53:17 +0100 |
| commit | 687b1be63b80a273af9795baac702c7cb62802ac (patch) | |
| tree | d13e726c051be66cd310eda777f818f63914b5e2 /js/cabinet.js | |
| parent | 893fbf251d75df3f5ac1d02d704eec288de426c9 (diff) | |
| parent | 72c861f45ff7458698c2016af5982970d7258a05 (diff) | |
Merge branch 'nuck-dev'
Conflicts:
README.md
Diffstat (limited to 'js/cabinet.js')
| -rw-r--r-- | js/cabinet.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/js/cabinet.js b/js/cabinet.js new file mode 100644 index 0000000..ebbae4f --- /dev/null +++ b/js/cabinet.js @@ -0,0 +1,36 @@ +;(function($){ + $.hasFileAPI = function hasFileAPI () { + return (window.FormData !== undefined) + } + $.fn.cabinet = function (input) { + input = $(input) + + var _this = this + var passthrough = function (outer, inner, prevent, fn) { + _this.on(outer, function (e) { + if (inner === 'click') + input[0].click() + else + input.trigger(inner) + if (prevent) e.preventDefault() + if (fn) fn(e) + }, false) + } + + input[0].filelist = Object.create(FileList) + + input.on('change', function (e) { + this.filelist = e.target.files + _this.change() + }) + + passthrough('dragenter', 'dragenter', true) + passthrough('dragover', 'dragover', true) + passthrough('dragleave', 'dragleave', true) + passthrough('click', 'click', false) + passthrough('drop', 'dragleave', true, function (e) { + input[0].filelist = e.dataTransfer.files + _this.change() + }) + } +})($) |
