6

この問題Internet Explorer 10は、私がテストしているものであり、現在のバージョンの には影響しませんFirefox or Chrome

Internet Explorer での再現手順

  1. 移動: http://jqueryui.com/datepicker/
  2. 日付フィールドをクリックして、datepicker
  3. 開いている間に、ウィンドウの横にある別のアプリケーション ウィンドウに移動し、パネルIEに戻ってIE空白のスペースをクリックします。datepicker
  4. が消えてから再表示されるはずですdatepicker。これは、最後にフォーカスを持っていたコントロールが、クリックして戻ったときにフォーカスを取り戻すという事実に関連していると思われます。

私が気づいたこと:

  • を最小化して最大化するとIE、それは起こりません
  • 別のアプリケーションをクリックして空白を直接クリックせずに同じ手順を実行すると、それは起こりません
  • ウィンドウ/アプリを並べて表示したり、2 台のモニターに表示したりしても、一貫して動作します

これは軽微な問題であり、実際にはバグのようには見えませんがdatepicker、ポップアップ ウィンドウの一部として が表示され、クリックするとウィンドウが消えるアプリケーションでは、より大きな問題になります。

親コンテナーを使用した日付ピッカー:

コンテナ付き日付ピッカー

孤立した日付ピッカーが再表示されます:

孤立した日付ピッカー

私が試したこと:

datepicker私がテストした以下を示唆するの可視性に関連する投稿を見てきました:

$("#my-datepicker-div").datepicker('destroy');
$("#my-datepicker-div").datepicker('disable');

この特殊なケースは喜んで無視しますが、修正が必要なバグとして提起されました。他に何を試すべきかわかりません。

4

1 に答える 1

4

次のように呼び出すことで、IE 10で修正できました(更新してから閉じるため、少しちらつきがあります)。

$("#datepicker").datepicker("hide");

div が閉じるときに呼び出される関数内 (この簡単な例では、ウィンドウに戻るときに div の外側をクリックします)。フィドルの例: http://jsfiddle.net/anyuG/

IE 10 について説明した動作を再現するには、関数内のその行をコメント アウトするだけでdisablepopup()、孤立した日付ピッカー ウィンドウを再現できます。実際の例をフィドルとして投稿すると、それを処理できます。

ここでポップアップ div の例をつかみました: http://istockphp.com/jquery/creating-popup-div-with-jquery/

アップデート

これを処理するもう 1 つの方法は、関数$(window).blur()$(window).focus()関数を使用することです。私の意見では、これは問題ないように見えます。ウィンドウの終了時に閉じることに注意してください。白いボックス内をクリックすると再び開き、白いボックスの外側をクリックするとすべてが閉じます。

$(window).blur(function(e) {
    $("#datepicker").datepicker("hide");
});

フィドルを更新しました。同様にプレイし.focus()て、好みに最適なコンボを決定してください。うまくいくはずです. また、IE 10 のみを検出し、そのブラウザーでのみこのコードを実行することもできます。

フィドル: http://jsfiddle.net/78252/1/

于 2014-02-21T18:27:35.467 に答える