2016-04-08 16 views
5

私はブートストラップポップオーバーを使用しており、ユーザーが言語を変更できるようにポップオーバーの内側に<select>フィールドを持っています。Bootstrap3 popover data-trigger =ポップアップ内で<select>入力をクリックするとフォーカスが閉じるポップアップ

ポップオーバーの外側をクリックすると消えてしまいますので、これを達成するために<a>タグ内のdata-trigger="focus"属性を使用しています。

しかし、<select>ドロップダウンメニューをクリックすると、言語をクリックする前にポップオーバーが消えます。

以下は参照用のブーツです。どんな助けでも大歓迎です。

http://www.bootply.com/SEM4ophIhx

Javascriptを:

$(function() { 
    $('[data-toggle="popover"]').popover() 
}) 

$(function() { 
    $('[rel="popover"]').popover({ 
     container: 'body', 
     html: true, 
     content: function() { 
      var clone = $($(this).data('popover-content')).clone(true).removeClass('hide'); 
      return clone; 
     } 
    }).click(function (e) { 
     e.preventDefault(); 
    }); 
}); 

HTML:

<a href="#" role="button" data-placement="right" data-trigger="focus" rel="popover" data-popover-content="#profilesettingsaction"> 
<span class="glyphicon glyphicon-cog"></span> 
</a> 
    <div id="profilesettingsaction" class="hide">        
     <ul> 
     <li> 
      <select name="language"> 
      <option value="">العربية: الإمارات العربية المتحدة</option> 
      <option value="">中国</option> 
      <option value="">中國</option> 
      <option value="">Nederlands: Nederland</option> 
      <option value="">English: United Kingdom</option> 
      <option value="" selected="">Language: English</option> 
      <option value="">Français: France</option> 
      <option value="">Italiano: l'Italia</option> 
      <option value="">日本語:日本</option> 
      <option value="">Português: Portugal</option> 
      <option value="">Español: México</option> 
      </select> 
     </li> 
     </ul>         
    </div> 

答えて

2

私はあなたが属性データ・トリガーを誤用と信じて、あなたはクリックを指定している必要があり、焦点を当てていません。

ここでそれが働いている:http://www.bootply.com/5gXiitMup1

を私は言語が選択されるたびにポップオーバーの閉鎖を処理するコードを追加しました。

希望します。

+2

ありがとう、これは素晴らしい情報ですが、まだドロップダウンから言語を選択できるうちに、ユーザーがポップオーバーの外をクリックして離れることができるようにしたいと考えています。 ユーザーが言語をクリックすると、新しいコピーが表示されるようにページがリロードされますが、それと同時にポップアップが折りたたまれます。 この問題は同じ問題を抱えています - http://stackoverflow.com/questions/27648587/how-to-prevent-the-popover-div-for-hiding-on-clicking-inside-it-for-twitter-ブート –

+0

は現時点では不可能だと思われますが、私は多くのパスを試しましたが、JQueryコードで同様のことを実装してカスタム動作をプログラムできます。 – theCodeSurgeon

+0

ありがとう、あまりにもたくさんのことを試して、私は以前コミュニティが経験したことがないと思っていました。 –

2

Found a way to do this

$('[data-toggle="popover"]').popover(); 

$('body').on('click', function (e) { 
    $('[data-toggle="popover"]').each(function() { 
     //the 'is' for buttons that trigger popups 
     //the 'has' for icons within a button that triggers a popup 
     if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) { 
      $(this).popover('hide'); 
     } 
    }); 
}); 

あなたは、単に身体上のイベントをクリックして、ターゲットがあなたのポップオーバーの子であるかどうかを確認キャッチ。しかし、これは本当に遅いです。

関連する問題