Je cherchais ce Saint-Graal - de belles boîtes de dialogue en HTML. Je suis venu avec une solution qui utilise jQuery à click()
l'élément de fichier (caché) quand un bouton est cliqué. Cela fonctionne très bien dans FireFox 4, mais Chrome et Opera échouent. Changer le click()
en focus()
a fonctionné pour Chrome, mais rien ne fonctionne dans Opera. Je n'ai pas testé IE, mais je ne veux pas encore ragequit la vie.Navigateur ouvert ouvrir le fichier de dialogue
Voici le code actuel:
HTML
<div class="formFile" id="profileImgContainer">
<input type="file" name="profileImg" id="profileImg">
<label>Profile Picture</label>
<div>
<input type="text" id="profileImgText"><input type="button" id="profileImgButton" value="Choose File">
</div>
</div>
jQuery
$(".formFile input[type='file']").live('change', function()
{
$(this).parents(".formFile").find("input[type='text']").val($(this).val());
});
$(".formFile input[type='button']").live('click', function()
{
$(this).parents(".formFile").find("input[type='file']").click();
});
$(".formFile input[type='text']").live('click', function()
{
$(this).parents(".formFile").find("input[type='file']").click();
});
Quelqu'un peut-il offrir un moyen croix navigateur d'ouvrir la boîte de dialogue de fichier en utilisant jQuery/JavaScript ? Je ne veux pas utiliser l'astuce élément transparent en raison de la nécessité d'avoir des interactions d'entrée (CSS :hover
), etc.
+1 pour «Je ne veux pas encore vivre ma vie» :-) – andyb
Merci andyb. IE est le fléau de mon existence. S'il est entré dans un trou et est mort (ou a été remplacé par FF, Chrome, saucisses sur une assiette, etc) puis moi et tous les autres développeurs web là-bas seraient tellement plus heureux! – Bojangles
ne pouvait pas être plus d'accord! BTW, avez-vous vu http://stackoverflow.com/questions/210643/in-javascript-can-i-make-a-click-event-fire-programmatically-for-a-file-input-e/3030174#3030174 – andyb