У меня есть код, который позволяет моим пользователям открывать браузер файлов браузера клиента, чтобы они могли выбрать файл.Можно ли использовать клавиатуру для запуска браузера файлов в JavaScript?
Это нормально работает, когда пользователь нажимает кнопку с помощью мыши, но как-то полностью с ней не работает.
Так я установка кнопки следующим образом:
var that = this,
upload_button = jQuery(".upload-button");
upload_button.click(function(e)
{
e.preventDefault();
e.stopPropagation();
// simulate a click on the hidden file-input button
that.upload(editor_widget);
});
I Настройка интерфейса клавиатуры следующим образом (upload_button получит фокус первый, очевидно):
upload_button.keypress(function(e)
{
if(!e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey)
{
switch(e.which)
{
case 85: // [U]pload
case 13: // Enter
e.preventDefault();
e.stopPropagation();
// simulate a click on the hidden file-input Browse button
that.upload(editor_widget);
break;
}
}
});
Тогда функция загрузки выглядит следующим образом :
....prototype.upload = function(editor_widget)
{
var upload_button = jQuery(".upload-button"),
upload_input_file = w.find(".file-input input");
// ignore clicks if the button does not exist
if(!upload_button.exists())
{
return;
}
// simulate a click on the file "Browse" button
//
upload_input_file.focus();
upload_input_file.click();
c.focus();
};
Так, как-то upload_input_file.click();
отлично работает, когда я нажимаю окурок на. Он полностью терпит неудачу, когда я нажимаю U
или <enter>
...
Я в первую очередь тестирую в Firefox на данный момент.
по соображениям безопасности вы обычно нужно вызвать событие щелчка в стеке для отображения диалогового окна. – dandavis
См. Http://stackoverflow.com/questions/29728705/trigger-click-on-input-file-on-asynchronous-ajax-done – guest271314
@ guest271314, только я не вызываю 'click()' в асинхронной функции , но на клавиатурном триггере, против щелчка мыши. –