Я думаю, что это невозможно, я поиграл с этим здесь: http://jsfiddle.net/K35tB/5/ Также используя таймеры, чтобы проверить, содержит ли fileToUpload что-то, а затем попытаться вызвать обратную передачу. Что происходит, так это то, что я получаю сообщение «Отказ в доступе», если я делаю обратную передачу после того, как FileToUload был запущен. Если я выполняю обратную передачу раньше, это работает. Так что это как-то связано.
$("#mysubmit").click(function(){
document.getElementById("fileToUpload").click();
document.forms["myform"].submit(); // JavaScript error, No permission / Access denied (Åtkomst nekas in Swedish ;-))
});
Но, конечно, этот код работает
document.forms["myform"].submit();
Я играл с IE 8.0.7
Если вы проверите пример Fiddle, измените его и запустите версию таймера, вы увидите, что путь виден для звука, и когда мы выполним «Отправить», он отклонится.
Возможно, вам следует попробовать сделать то же самое, используя http://swfupload.org/ или какой-либо другой компонент. Если в вашем проекте нет необходимости использовать элементы управления HTML. Надеюсь, это каким-то образом помогло!
Редактировать 1:
Я попробовал еще несколько примеров, и это работает правильно, если вы поместите fileToUpload вне тега формы. Так что это наводит на мысли, что это какая-то вещь, связанная с безопасностью. Я также попытался поместить fileToUpload за пределы формы и непосредственно перед постбэком, изменив DOM и вставив его в форму. Тот же результат, доступ запрещен ...