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

StackOverflow https://stackoverflow.com/questions/1734478

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.)

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top