1

Comme le titre le dit, je veux que la boîte de dialogue 'select file' s'ouvre lorsqu'un certain input obtient le focus en tabulant les champs de formulaire (en utilisant la navigation au clavier). Par défaut, la fenêtre 'select file' ne s'ouvre que lorsque vous cliquez sur le champ.Affichage de la boîte de dialogue 'select file' du navigateur lors de la mise au point [type = fichier] par la navigation au clavier

Je mis une page sur JS Bin pour cette question: http://jsbin.com/areba/edit

Actuellement, 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 un entrée de fichier. L'idée est que lorsque la saisie de texte reçoit le focus, l'entrée du fichier est «cliquée» ou autre et la fenêtre «sélectionner le fichier» s'ouvre. L'instruction .css('background', 'lime') semble fonctionner correctement; Toutefois, l'appel .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.)

Répondre

2

Cela fonctionnera dans IE et Safari (je pense), mais pas dans Opera ou Firefox, car ils n'ont pas implémenté l'événement click() pour les éléments de téléchargement de fichiers - edit: encore.

1

Je doute que vous seriez en mesure de faire activer la boîte de dialogue pour des raisons de sécurité. Un véritable événement de clic doit se produire, en fonction du navigateur.

Je sais que Flash/Flex a cette exigence.

Questions connexes