Fix file input on Opera not being reset in QR.resetFileInput.

This commit is contained in:
Nicolas Stepien 2012-06-14 21:15:48 +02:00
parent 428d3fe1ff
commit 7f1c8fbb4b
2 changed files with 35 additions and 2 deletions

View File

@ -1630,7 +1630,27 @@
return QR.resetFileInput();
},
resetFileInput: function() {
return $('[type=file]', QR.el).value = null;
var clone, input;
input = $('[type=file]', QR.el);
input.value = null;
if ($.engine !== 'presto') {
return;
}
clone = $.el('input', {
type: 'file',
accept: input.accept,
max: input.max,
multiple: input.multiple,
size: input.size,
title: input.title
});
$.on(clone, 'change', QR.fileInput);
$.on(clone, 'click', function(e) {
if (e.shiftKey) {
return QR.selected.rmFile() || e.preventDefault();
}
});
return $.replace(input, clone);
},
replies: [],
reply: (function() {

View File

@ -1207,7 +1207,20 @@ QR =
$.addClass QR.el, 'dump'
QR.resetFileInput() # reset input
resetFileInput: ->
$('[type=file]', QR.el).value = null
input = $ '[type=file]', QR.el
input.value = null
return unless $.engine is 'presto'
# XXX Opera needs extra care to reset its file input's value
clone = $.el 'input',
type: 'file'
accept: input.accept
max: input.max
multiple: input.multiple
size: input.size
title: input.title
$.on clone, 'change', QR.fileInput
$.on clone, 'click', (e) -> if e.shiftKey then QR.selected.rmFile() or e.preventDefault()
$.replace input, clone
replies: []
reply: class