私はその聖杯を探していました。私は、ボタンがクリックされたときに(隠された)ファイル要素であるclick()
にjQueryを使用するソリューションを考え出しました。これはFireFox 4では正常に動作しますが、ChromeとOperaは失敗します。 click()
からfocus()
をChrome用に変更しましたが、Operaでは何も動作しません。私はIEをテストしていませんが、私はまだ人生を激怒させたくありません。クロスブラウザの開いているファイルのブラウズダイアログ
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();
});
誰でもjQueryの/ JavaScriptを使用してファイルダイアログを開くのクロスブラウザの方法を提供することができます:ここで
は、現在のコードです? I入力の相互作用(CSS :hover
)を持つ必要性に起因する透過要素のトリックを使用しないなど
+1「私は人生をかなり怒らせたくありません」:-) – andyb
ありがとうandyb。 IEは私の存在の狂気です。それが穴に入って死んだら(あるいは、FF、Chrome、ソーセージなどで置き換えられた場合)、私と他のすべてのWeb開発者がとても幸せになるでしょう! – Bojangles
もっと同意できませんでした!ところで、見たことがありますか?http://stackoverflow.com/questions/210643/in-javascript-can-i-make-a-click-event-fire-programmatically-for-a-file-input-e/3030174#3030174 – andyb