1

inputタイトルにあるように、フォームフィールドをタブで移動して(キーボードナビゲーションを使用して)特定のフォーカスが得られたときに、[ファイルの選択]ダイアログを開きたいと思います。デフォルトでは、「ファイルの選択」ウィンドウは、フィールドがクリックされたときにのみ開きます。

この問題についてJSBinにページを掲載しました:http://jsbin.com/areba/edit

現在、このページは次のコードで構成されています。

<!doctype html> 
<html> 
 <head> 
  <title>Sandbox</title> 
  <meta charset="utf-8"> 
 </head> 
 <body> 
  <form> 
   <input type="text"> 
   <input type="file">
  </form>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  <script>
   $(function() {
    $('input[type=text]').focus(function() {
     $(this).next('input[type=file]').css('background', 'lime').trigger('click');
    });
   });
  </script>
 </body> 
</html>

ご覧のとおり、テキスト入力とファイル入力があります。アイデアは、テキスト入力がフォーカスを受け取ると、ファイル入力が「クリック」されるなどして、「ファイルの選択」ウィンドウが開くというものです。

.css('background', 'lime')ステートメントは正常に機能しているようです。.trigger('click')ただし、ファイル入力を呼び出しても何も起こらないようです。

(これによりアクセシビリティの問題が発生する可能性があることを認識しているので、それについては説明しないでください。ありがとうございます。)

4

2 に答える 2

2

これは IE と Safari (私が思うに) では機能しますが、Opera や Firefox では機能しません。ファイル アップロード要素の click() イベントを実装していないためです - edit: まだ。

于 2009-11-14T15:44:18.693 に答える
1

セキュリティ上の理由から、ダイアログをアクティブ化できるとは思えません。ブラウザによっては、実際のクリックイベントが発生する必要があります。

Flash/Flexにはこの要件があることを私は知っています。

于 2009-11-14T15:18:41.510 に答える