jqueryで
<input id="file" type="file" />
にたいして、
$("#file").click();
として、<input id="file" type="file" />を直接マウスでクリックしたときのような挙動を起こしたいのですが、そうなりません。(なにもおこりません)
このような例はネットを探せばよくありますが、マネしても効果がないです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
<input id="file" type="file" />
のデザインが嫌だったので、画像を用意して。その画像をクリックしたら、<input id="file" type="file" />
にjqueryをつかいクリックしようとおもいました。
<input id="file" type="file" />
はcssでdisplay:none;にしています。
label要素を使って解決するのがスマートだと思います。
ただし、この方法には製作者スタイルシートを無効に設定しているブラウザでlabel要素内のコンテンツ、<input type="file">
の両方が出現してしまう問題があります。
質問者さんがやろうとしていう事でも同様の問題があります。
Re: teratailpeta さん
投稿2016/11/16 02:49
編集2016/11/16 02:51総合スコア18162
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
まず前提として
<input id="file" type="file" />
をクリックすればjavascript、jqueryを使わなくとも、ファイル選択ダイアログは開きます。
ただし、下記のようにクリックイベント時にイベントの伝搬をさせないようにreturn false
するとクリックしても開かなくなります。
javascript
1$(function(){ 2 $("#file").click(function(){ 3 return false; 4 }); 5});
そして、jqueryでマウスでクリックした時と同じ動作をという事ですが、例えばhtml部分に
HTML
1<input type="file" id="file"> 2<button id='btnopen'>open</button>
というボタンを追加してこれをクリックした時にファイル選択ダイアログを開く(つまり<input type="file" id="file">
をクリックした時と同じ処理をする事はできます)
javascript
1$(function(){ 2 $("#btnopen").click(function(){ 3 $('#file').trigger("click"); 4 }); 5});
ようはjqueryで<input type="file" id="file">
をクリックしたイベントを発生させているという事です。
ですのでマウスでクリックした時と同じ操作はできますが、以下のような処理は行わないでください。LOOPしてえらいことなりますから
javascript
1$(function(){ 2 $("#file").click(function(){ 3 $(this).trigger("click"); 4 }); 5});
jqueryからファイル選択ダイアログを開くというのはようは<input type="file" id="file">
をjqueryでクリックするという事になります。
しかしあまりそういう使い方はしないと思います、なぜなら<input type="file" id="file">
自身がダイアログ開く機能をもっているから、なのでこういう使い方をするとしたらデザイン面で<input type="file" id="file">
を使いたくない時に
<input type="file" id="file" style="display:none">
などして非表示にしておいて、見た目の良いデザインのボタンなどを配置して上記のjqueryのように間接的にクリックするなどの使い方以外あまり思いつきません。
投稿2016/11/16 02:47
編集2016/11/16 02:48総合スコア1689
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/11/16 03:14
2016/11/16 03:57
0
$("#file")は要素で、clickして発火するものと推測します。
クリックしたらどうしたいのですか?
クリックが効かないと言われても・・
投稿2016/11/16 01:35
総合スコア686
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/11/16 01:39
2016/11/16 01:47
退会済みユーザー
2016/11/16 02:04
2016/11/16 02:23
退会済みユーザー
2016/11/16 02:35
2016/11/16 02:51
0
$("#file").click(); は $("こいつが").クリックされたとき(これをします); だと思うんですが。
$("#file").click();をロードしたらFILEが開くとか目的だった場合クリックされてないので無理なのでは?
投稿2016/11/16 02:36
総合スコア2050
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。