2012-02-22 11 views
3

私が持っているこのようなメニュー:入力タイプは=ファイルがonclickイベントに添付

<ul class="sub"> 
    <li><a href="#">New</a></li> 
    <li><a href="#">Open</a></li> 
    <li><a href="#">Save</a></li> 
    <li><a href="#">Help</a></li> 
</ul> 

と私のような、でもファイルを開くダイアログをキックオフだろうオープンリーにonclickを添付したいのですがinput type="file"です。私はliのonclickイベントにコードを付けることはできますが、どのコードを添付するのか分かりません。

TIAは

答えて

5

あなたはそれを非表示にするページやスタイルに通常のinput type="file"を追加することができます。このような何か:

<input type="file" id="theFileInput" style="display:none;" /> 

(のみ、この例ではインラインスタイルを使用して、私はもちろんのマークアップからスタイルを分離することをお勧めします。)

次に、あなたがAに応じて、その上でクリックを開始することができますターゲット要素のクリックイベント。 input type="file"がまだそこにあると同じように相互作用することができ

$('#clickableLiElement').click(function() { 
    $('#theFileInput').click(); 
}); 

:jQueryの(あなたがliidを設定し、あるいは独自に何らかの方法でセレクタでそれを識別できると仮定)で、それはようなものになるだろう他のフォーム要素それはユーザーには見えません。しかし、これはOpen Fileダイアログを起動し、その値を通常の要素に設定します。これはサーバーへのPOSTに通常含まれることがあります。

+0

これは素晴らしい:) – yanike

+0

IEでこの作業を行うに動作しますか? (IEはjavascriptによる入力の強制クリックを許可しません) – Jonathan

0

(デビッド)上記の答えは動作しますが、あなたがする必要がある、あなたのCSSファイルで:

opacity: 0; 
-moz-opacity: 0; 
filter:alpha(opacity=0); 

display:noneソリューションは、クロムやSafariで動作していません。

+0

間違っています。これにより、すべてのブラウザで非表示になります。テスト済み。 –

0
With JavaScript 

<input type="file" accept="images/*" name="images" id="images" onClick="showModal()"> 
 
<script> 
 
    function showModal(){ 
 
     alert("hi"); 
 
    } 
 
</script>

関連する問題