Mostrando de diálogo ‘Seleccionar archivo’ del navegador cuando se enfoca entrada [type = file] a través de la navegación por teclado
-
20-09-2019 - |
Pregunta
Como dice el título, quiero que el cuadro de diálogo ‘Seleccionar archivo’ para abrir cuando un cierto input
obtiene el foco de tabulación a través de los campos de formulario (usando la navegación por teclado). Por defecto, la ventana ‘seleccione el archivo’ sólo se abre cuando se hace clic en el campo.
pongo una página de JS Bin para este problema: http://jsbin.com/areba/edit
En la actualidad, esta página consiste en el siguiente código:
<!doctype html>
<html>
<head>
<title>Sandbox</title>
<meta charset="utf-8">
</head>
<body>
<form>
<input type="text">
<input type="file">
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(function() {
$('input[type=text]').focus(function() {
$(this).next('input[type=file]').css('background', 'lime').trigger('click');
});
});
</script>
</body>
</html>
Como se puede ver, hay una entrada de texto y un archivo de entrada. La idea es que cuando la entrada de texto se selecciona, el archivo de entrada se hizo ‘clic’ o lo que sea y se abre la ventana ‘Seleccionar archivo’.
La declaración .css('background', 'lime')
parece funcionar bien; Sin embargo, invocando .trigger('click')
en el archivo de entrada parece no hacer nada en absoluto.
(me di cuenta que esto podría causar un problema de accesibilidad, así que por favor, no vamos a hablar de eso. Gracias.)
Solución
Esto funciona en IE y Safari (creo), pero no en Opera o Firefox, ya que no han implementado el evento Click () para los elementos de carga de archivo - edición:. Aún no
Otros consejos
dudo que sería capaz de hacer activar el diálogo por razones de seguridad. Un acontecimiento real clic tiene que ocurrir, dependiendo del navegador.
Yo sé Flash / Flex tiene este requisito.