2016-07-14 14 views
1

を開きます。セットブートストラップモーダル内部のボタンにフォーカスそれは私には、次の達成しようとしています

  1. ページのロードが、フォーカスは、フォームの最初の要素になります。
  2. フォーム上でボタンを押すと、モーダルが確認され、モーダルダイアログ内の "続行"ボタンにフォーカスが移動しているはずです。

私は最初の1つの作業をすることができましたが、2番目の作業ではなぜ動作しないのかわかりません。以下は私のコードです。

HTML

<form method="post" {% if action %} action="{{ action }}" {% endif %} role="form" enctype="multipart/form-data"> 
<!-- Modal --> 
    <div class="modal fade" id="confirmationModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
    <div class="modal-dialog" role="document"> 
     <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
      <span aria-hidden="true">&times;</span> 
      </button> 
      <h4 class="modal-title" id="myModalLabel">Confirmation</h4> 
     </div> 
     <div class="modal-body"> 
      {{ confirm | default: "Would you like to proceed?" }} 
     </div> 
     <div class="modal-footer"> 
      <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
      <button type="submit" id="submit-main-form" class="btn btn-primary"> 
       <i class="fa fa-save"></i> {{ submit_text | default: "Proceed" }} 
      </button> 
     </div> 
     </div> 
    </div> 
    </div> 

</form> 

スクリプト

/* Sets focus on the first element of the form */ 
$(document).ready(function() { 

    $('form:first *:input[type!=hidden]:first').focus(); 

    $("#confirmationModal").on('show.bs.modal', function(event) { 
     // not setting focus to submit button 
     $("#submit-main-form").focus(); 
    }); 
}); 
+0

'show.bs.modal'イベントが期待通りに機能しているかどうか確認できますか? – Rohit416

+0

@ Rohit416はい。その中に 'alert();'メソッドを追加すると、警告が表示されます。 –

+0

あなたのfocus()が実行された後にアクティブな要素がどれかを見てみましょう。focusを設定した後にこの行を置きます: 'console.log(document.activeElement);' – Rohit416

答えて

4

あなたはモーダルが

を示されようとしているとき、私はあなたが発生shown.bs.modalイベントを必要とすると信じて発生しshow.bs.modalを使用していますモーダルがwhに沿って完全に表示されているときすべてのCSSトランジションが完了しました。

Bootstrap modal referenceを参照してください。

+0

それはそれでした。ありがとう! –

関連する問題