38

ASP.NET AJAX ModalPopupExtenderにはプロパティがありますがOnCancelScriptOnOkScriptプロパティがないようですOnShowScript。ポップアップが表示されるたびに実行するjavascript関数を指定したいと思います。

以前の状況では、をTargetControlIDダミーコントロールに設定し、最初にいくつかのJSコードを実行し、次にJSメソッドを使用してポップアップを表示する独自のコントロールを提供しました。しかし、この場合、クライアント側とサーバー側の両方のコードからのポップアップを表示しています。

誰かがこれを行う方法を知っていますか?

ところで、TinyMCEエディターを作成したいモーダルにテキストボックスがあるので、これが必要でした。しかし、TinyMCE initスクリプトは非表示のテキストボックスでは機能しないため、モーダルが表示されたときにスクリプトを実行する方法を見つける必要がありました。

4

8 に答える 8

30

うーん... MPEのイベントが表示されていると確信しています...これは頭から離れていますが、page_loadで表示されているイベントにイベントハンドラーを追加できると思います

function pageLoad()
{
    var popup = $find('ModalPopupClientID');
    popup.add_shown(SetFocus);
}

function SetFocus()
{
    $get('TriggerClientId').focus();
}

これがサーバー側からの呼び出しに役立つかどうかはわかりません

于 2008-08-08T00:03:41.067 に答える
16

マークアップでそれを行う簡単な方法は次のとおりです。

<ajaxToolkit:ModalPopupExtender 
    ID="ModalPopupExtender2" runat="server" 
    TargetControlID="lnk_OpenGame" 
    PopupControlID="Panel1" 
    BehaviorID="SilverPracticeBehaviorID"  >
    <Animations>
        <OnShown>
             <ScriptAction Script="InitializeGame();" />  
        </OnShown>
    </Animations>                
</ajaxToolkit:ModalPopupExtender>
于 2012-03-02T07:24:20.683 に答える
11

ModalPopupExtenderのBehaviorID値を使用する必要があります。mpeBID

function pageLoad() {
    $find('mpeBID').add_shown(HideMediaPlayer);
}

function HideMediaPlayer() {
    var divMovie = $get('<%=divMovie.ClientID%>');
    divMovie.style.display = "none";
}
于 2010-03-02T18:11:23.030 に答える
2

ボタンやハイパーリンクなどを使用してポップアップを表示するようにトリガーする場合は、トリガーのonClickイベントにハンドラーを追加して、モーダルポップアップを起動し、同時にjavascriptを実行することもできますか?

于 2008-08-07T23:44:27.283 に答える
2

ModalPopupExtenderは、「トリガー」要素であると指定したボタン/ハイパーリンクを変更します。ポップアップが表示される前にトリガーを追加するonclickスクリプト。ポップアップが表示された後にスクリプトを起動したい。

また、サーバー側からモーダルを表示するときの問題がまだ残っています。

于 2008-08-07T23:50:32.917 に答える
2
var launch = false;

function launchModal() {
    launch = true;
}

function pageLoad() {
    if (launch) {
          var ModalPedimento = $find('ModalPopupExtender_Pedimento');
          ModalPedimento.show();
          ModalPedimento.add_shown(SetFocus);
    }
}

function SetFocus() {
    $get('TriggerClientId').focus();
}
于 2013-04-10T00:50:38.103 に答える
2

CSS で非表示にすると、TinyMCE は非表示のテキスト ボックスで動作します (display:none;)

于 2010-01-27T00:34:17.417 に答える
2

2 つのモーダル フォームの場合:

var launch = false;
var NameObject = '';

function launchModal(ModalPopupExtender) {
    launch = true;
    NameObject = ModalPopupExtender;
}

function pageLoad() {
    if (launch) {
        var ModalObject = $find(NameObject);
        ModalObject.show();
        ModalObject.add_shown(SetFocus);
                }
} 

function SetFocus() {
    $get('TriggerClientId').focus();
}

サーバー側: behand

protected void btnNuevo_Click(object sender, EventArgs e)
{
    //Para recuperar el formulario modal desde el lado del sercidor
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", "<script>launchModal('" + ModalPopupExtender_Factura.ID.ToString() + "');</script>", false);
}
于 2013-04-10T17:29:18.313 に答える