J'ai un lien,
<a id="upload-file">Upload your photo</a>
Et si je clique dessus, je veux qu'il agisse comme une entrée de fichier de navigation
<input id="upload-file" type="file"/>
Comment pourrais-je accomplir ceci?
HTML
<input id="upload" type="file"/>
<a href="" id="upload_link">Upload your photo</a>
CSS
#upload{
display:none
}
JS
$(function(){
$("#upload_link").on('click', function(e){
e.preventDefault();
$("#upload:hidden").trigger('click');
});
});
ce qui suit va résoudre le problème
html
<input id="upload-file" type="file"/>
<a id="fileupload">Upload your photo</a>
css
#upload-file{
display: none;
}
js
$("#fileupload").click(function(){
$("#upload-file").click();
});
Vous pouvez avoir une balise <input>
masquée sur laquelle vous pouvez ensuite appeler $('#upload').click()
afin de simuler un clic.
Ou bien, vous pouvez avoir une balise <input>
masquée avec un identifiant, puis ajouter un attribut label à votre lien.
ÉDITÉ:
Voir cette démo: http://jsfiddle.net/rathoreahsan/s6Mjt/
JQUERY:
$("#upload").click(function(){
$("#upload-file").trigger('click');
});
HTML
<a href="javascript:void(0)" id="upload">Upload your photo</a>
<input id="upload-file" type="file"/>
CSS
#upload-file {
display:none;
}
OU
Vous pouvez utiliser les plugins Nice comme ceci:
Vous pouvez le faire sans Javascript comme ça. solution inter-navigateur avec l'attribut for
:
HTML
<label for="inputUpload" class="custom-file-upload">Upload your file</label>
<input id="inputUpload" type="file" />
CSS
#inputUpload {
display: none;
}
.custom-file-upload {
cursor: pointer;
font-size: inherit;
color: #0c090d;
}
.custom-file-upload:hover {
text-decoration: underline;
}
Dans Angular 6, vous pouvez faire comme ça,
<li class="list-group-item active cursor-pointer" (click)="file.click()">
<i class="fas fa-cloud-upload-alt"></i> Upload <input type="file" #file hidden />
</li>
Lorsque vous cliquez sur une balise HTML, le clic du bouton de saisie est déclenché. L'attribut " hidden " rend invisible.