J'essaie de déclencher une boîte de téléchargement (bouton Parcourir) en utilisant jQuery.
La méthode que j'ai essayée maintenant est:
$('#fileinput').trigger('click');
Mais cela ne semble pas fonctionner. Veuillez aider. Je vous remercie.
javascript
jquery
css
Alec Smart
la source
la source
Réponses:
Cela est dû à une restriction de sécurité.
J'ai découvert que la restriction de sécurité est uniquement lorsque le
<input type="file"/>
est défini surdisplay:none;
ou estvisbilty:hidden
.J'ai donc essayé le positionner en dehors de la fenêtre en définissant
position:absolute
ettop:-100px;
et cela fonctionne le tour est joué.voir http://jsfiddle.net/DSARd/1/
appelez ça un hack.
J'espère que cela fonctionne pour vous.
la source
left: -100px;
. Vous ne savez jamais combien de temps peut durer une pagecela a fonctionné pour moi:
JS:
HTML:
CSS:
>>> Un autre qui fonctionne Cross-Browser: <<<
L'idée est que vous superposiez un énorme bouton "Parcourir" invisible sur votre bouton personnalisé. Ainsi, lorsque l'utilisateur clique sur votre bouton personnalisé, il clique en fait sur le bouton "Parcourir" du champ de saisie natif.
JS Fiddle: http://jsfiddle.net/5Rh7b/
HTML:
CSS:
JavaScript:
la source
height
est suggéré de passer àheight: 100%
Vous pouvez utiliser l'élément LABEL ex.
Cela déclenchera le fichier d'entrée
la source
Je le fais fonctionner (= testé) dans IE8 +, FF récent et chrome:
La clé se concentre avant de déclencher le clic (sinon Chrome l'ignore).
Remarque: vous devez avoir votre entrée affichée et visible (comme dans, pas
display:none
et nonvisibility:hidden
). Je suggère (comme beaucoup d'autres l'ont fait auparavant) de positionner absolument l'entrée et de la jeter hors de l'écran.la source
Regarde mon violon.
http://jsfiddle.net/mohany2712/vaw8k/
la source
adardesign l'a cloué sur le fait que l'élément d'entrée du fichier était ignoré lorsqu'il est masqué. J'ai également remarqué que de nombreuses personnes changeaient la taille de l'élément à 0 ou le poussaient hors des limites avec des ajustements de positionnement et de débordement. Ce sont toutes de bonnes idées.
Une autre façon qui semble également fonctionner parfaitement est de simplement définir l'opacité sur 0 . Ensuite, vous pouvez toujours simplement définir la position pour l'empêcher de compenser d'autres éléments comme le fait hide. Il semble juste un peu inutile de déplacer un élément de près de 10K pixels dans n'importe quelle direction.
Voici un petit exemple pour ceux qui en veulent un:
la source
Par simple curiosité, vous pouvez faire quelque chose comme vous le souhaitez en créant dynamiquement un formulaire de téléchargement et un fichier d'entrée, sans l'ajouter à l'arborescence DOM:
Pas besoin d'ajouter le uploadForm au DOM.
la source
Code correct:
la source
C'est exprès et par conception. C'est un problème de sécurité.
la source
En fait, j'ai découvert une méthode très simple pour cela, à savoir:
De cette façon, votre champ de saisie de fichier peut afficher la propriété css sur aucun et gagner la transaction :)
la source
Il est trop tard pour répondre mais je pense que cette configuration minimale fonctionne le mieux. Je recherche également la même chose.
// css
jsbin
Démo des boutons d'entrée du fichier bootstrap
la source
C'est une question très ancienne, mais malheureusement, ce problème est toujours d'actualité et nécessite une solution.
La solution (étonnamment simple) que j'ai trouvée est de "cacher" le champ d'entrée du fichier réel et de l'envelopper avec une balise LABEL (peut être basée sur Bootstrap et HTML5, pour une amélioration).
See here:
Exemple de code iciDe cette façon, le champ d'entrée du fichier réel est invisible et tout ce que vous voyez est le "bouton" personnalisé qui est en fait un élément LABEL modifié. Lorsque vous cliquez sur cet élément LABEL, la fenêtre de sélection d'un fichier apparaît et le fichier que vous choisissez ira dans le champ de saisie du fichier réel.
En plus de cela, vous pouvez manipuler l'apparence et le comportement à votre guise (par exemple: obtenir le nom du fichier sélectionné à partir du fichier d'entrée, après l'avoir sélectionné, et l'afficher quelque part. L'élément LABEL ne le fait pas automatiquement, Bien sûr, je le mets généralement à l'intérieur du LABEL, comme contenu textuel).
Attention cependant! La manipulation de l'apparence et du comportement de ceci est limitée à tout ce que vous pouvez imaginer et penser. ;-) ;-)
la source
J'ai réussi avec un simple $ (...). Click (); avec JQuery 1.6.1
la source
ou bien simplement
la source
J'ai eu des problèmes avec la validation personnalisée côté client
<input type="file"/>
pendant l'utilisation d'un faux bouton pour le déclencher et la solution de @Guillaume Bodi a fonctionné pour moi (également avecopacity: 0;
sur chrome)et style css pour l'entrée de téléchargement
la source
Essayez ceci, c'est un hack. la position: absolue est pour Chrome et le déclencheur («changement») est pour IE.
la source
$.browser
c'est obsolète dans les nouvelles versions de jQueryMon problème était un peu différent sur iOS 7. Il s'avère que FastClick posait des problèmes. Tout ce que j'avais à faire était d'ajouter
class="needsclick"
à mon bouton.la source
C'est probablement la meilleure réponse, en gardant à l'esprit les problèmes entre navigateurs.
CSS:
JS:
HTML:
la source
Je pense que je comprends votre problème, car j'ai un similaire. Donc, la balise
<label>
a l'attribut pour, vous pouvez utiliser cet attribut pour lier votre entrée avec type = "file". Mais si vous ne voulez pas l'activer en utilisant cette étiquette parce que certaines règles de votre mise en page, vous pouvez faire comme ceci.Bien sûr, vous allez l'adapter à vos propres fins et mise en page, mais c'est le moyen le plus simple que je connaisse pour le faire fonctionner !!
la source
Sur la base de la réponse de Guillaume Bodi, j'ai fait ceci:
ce qui signifie qu'il est masqué au départ, puis affiché pour le déclencheur, puis à nouveau masqué immédiatement.
la source