2017-07-26 15 views
1

style = "display:none;"でファイルタイプ入力ボタンと同じ動作を与える方法カスタムラベルに?つまり、入力が隠されていても、ラベルと入力は同じアクションを持つことができます。私のhtmlコードの下 :隠し入力とカスタムラベルの同じ動作を与える方法

<label for="model1" class="uploadFile">File...</label> 
<input id="model1" type="file" name="model1" class="model1" style="display:none;" required="true" /> 

答えて

1

それはjQueryを使って非常に簡単です:

$('#model1Label').on('click', function(){ 
 
    $('#model1').triggerHandler('click'); 
 
    
 
    //seems not to work consistently on chrome (only for file inputs?) 
 
    //$('#model1').trigger('click'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label id="model1Label" for="model1" class="uploadFile">File...</label> 
 
<input id="model1" type="file" name="model1" class="model1" style="display:none;" required="true" />

EDIT:SKSpallにより示唆されるように、時の奇妙な行動のためのトリガ機能を修正最小クロム

+0

[キャンセル]/[開く]をクリックした後、ファイルダイアログボックスが2回表示されます。[キャンセル]を1回クリックすると、もう一度[キャンセル]をクリックすると、消えます。 .triggerHandler()はイベントのデフォルト動作を行わないため、triggerHandlerメソッドを使用するとよいでしょう。 $( '#model1')。triggerHandler( 'クリック');完璧に動作するはずです。 – SKSpall

+0

@SKSpall thx、回答を更新してください、Firefoxと完全にうまく動作しますが、Chromeのようないくつかのスパイウェアは奇妙な動作をするかもしれません:D – Kaddath

+0

ええ、私はChromeでテストしました。 :P Chromeとは別に、これはFFとIEで正常に動作します。 triggerHandlerは3つすべてで正常に動作します。 – SKSpall

関連する問題