Solved. When I clicked on the input button it also fired the parent's event handler due to propagation, the solution is ridiculously simple. I've never overwritten the input's event handler.
$('input:file').on('click', function () {
e.stopPropagation();
}