Javascriptで小さなカレンダーポップアップを作成しました。ASP.NETのCalendarコントロールを使用すると、非常に簡単です。showModalDialogを使用してポップアップウィンドウを呼び出します。モーダルウィンドウで、カレンダーの現在の月を変更すると、ポストバックが原因で問題が発生します。いくつかの場所で、解決策は次のようになります。
<base target="_self"/>
aspxファイルのヘッド部分にあります。すべてがうまく機能します...1つを除いて、GoogleChromeでのみです。選択した日付に戻すために、ポップアップのreturnValueをカレンダーで選択した日付に設定しました。IEとFirefoxでは、常に機能します。ただし、Chromeでは、カレンダーの現在の月を変更しない場合にのみ機能します。変更するとすぐに、showModalDialogの呼び出し元に戻り値が返されません。モーダルウィンドウが元のウィンドウではなくなったかのようです。戻り値は未定義です。
誰かがその行動を経験し、それを機能させるための提案がありますか?dialogArgumentsを使用して呼び出し元ウィンドウのトレースを保持しようとしましたが、最初のモーダルウィンドウにのみ渡されます(現在の月を変更すると失われます)。
呼び出し元のプロシージャのコード:
var d = window.showModalDialog(...)
モーダルウィンドウのコード:
window.returnValue = selectedDate;
self.close();
Teemuに言ったように、selectedDateとwindow.returnValueはどちらも常に正しいです。ただし、Google Chromeの場合(カレンダーを1か月変更した後)、returnValueはshowModalDialogによって返されません。また、dは未定義です。