Affichage « sélectionnez le fichier » boîte de dialogue lorsque l'entrée de mise au point [type = fichier] du navigateur grâce à la navigation du clavier
-
20-09-2019 - |
Question
Comme le dit le titre, je veux que le « sélectionnez le fichier » boîte de dialogue pour ouvrir quand un certain input
obtient le focus par tabulation à travers les champs de formulaire (l'aide du clavier). Par défaut, la fenêtre « sélectionner le fichier » ouvre uniquement lorsque le champ est cliqué.
Je mis une page sur JS Bin pour ce numéro: http://jsbin.com/areba/edit
À l'heure actuelle, cette page se compose du code ci-dessous:
<!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>
Comme vous pouvez le voir, il y a une entrée de texte et une entrée de fichier. L'idée est que lorsque l'entrée de texte reçoit le focus, l'entrée de fichier est « cliqué » ou autre chose et la fenêtre « sélectionnez le fichier » ouvre.
La déclaration de .css('background', 'lime')
semble fonctionner très bien; cependant, en invoquant .trigger('click')
sur l'entrée de fichier semble ne rien faire du tout.
(je me rends compte que cela pourrait provoquer un problème d'accessibilité, donc s'il vous plaît, nous allons discuter pas. Merci.)
La solution
Cela fonctionne dans IE et Safari (je pense), mais pas dans Opera ou Firefox, car ils ne sont pas mis en œuvre l'événement click () pour les éléments de téléchargement de fichiers - edit:. Encore
Autres conseils
Je doute que vous seriez en mesure de faire activer la boîte de dialogue pour des raisons de sécurité. Un événement réel de clic doit se produire, selon le navigateur.
Je sais Flash / Flex ont cette exigence.