2014-08-27 2 views
1

Итак, я пытаюсь выполнить стандартную «кнопку запуска кнопки ввода файла». Тем не менее, я еще не успел скрыть поле ввода - прямо сейчас он отображается на странице вместе с кнопкой, которая должна вызвать щелчок. Однако он не работает.Trigger нажмите на не скрытое поле ввода

<body> 
    <button id="uploadDocument" type="button" class="btn btn-primary btn-lg"> 
     <span>Check In</span> 
    </button> 
    <input id="fileupload" type="file" name="files[]" /> 
</body> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#uploadDocument").on("click", function() { 
      $("#fileupload").trigger("click"); 
     }); 
    }); 
</script> 

По какой-то причине это не работает. Как я уже сказал, и как вы можете видеть, поле ввода не скрыто - оно есть прямо на странице. Ничего не происходит. Если вы отлаживаете его и помещаете контрольные точки в код, он никогда не попадает. Я полагаю, что это должно быть что-то очевидное, но у меня разбился мой мозг, и я не могу понять это.

+0

$ ("# FileUpload"). Нажмите() –

+0

Ваш код работает отлично в [эта скрипка] (HTTP : //jsfiddle.net/epfk5ya6/). Однако, если вы измените версию jQuery на более старую, она не сработает. Старые версии jQuery не запускают события браузера. Обновлен ли ваш jQuery? – Stryner

+0

Здесь мы используем jQuery 1.11.0. – cidthecoatrack

ответ

3

https://github.com/blueimp/jQuery-File-Upload/wiki/Style-Guide

Почему это не возможно, чтобы программно инициировать выбор входного файла?

Большинство браузеров предотвращают отправку файлов, когда поле ввода не принимало событие прямого щелчка (или клавиатуры) в качестве меры предосторожности. Некоторые браузеры (например, Google Chrome) просто предотвращают событие щелчка, в то время как, например, Internet Explorer не отправляет файлы, которые были выбраны программным полем ввода файлов. Firefox 4 (и более поздние версии) пока единственный браузер с полной поддержкой для вызова «click» -Events на полностью скрытом (display: none) поле ввода файла.

+0

Большое вам спасибо! Я пропустил эту часть документации jQueryUpload - настолько язвительно, что так мы должны это делать, но это имеет смысл с рисками безопасности в противном случае. – cidthecoatrack

1

вы должны вызвать OnChange не щелкает

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#uploadDocument").on("click", function() { 
     $("#fileupload").trigger("change"); 
    }); 
}); 

чек здесь jsfiddle

Смежные вопросы