如何指定在显示ModalPopupExtender时运行的javascript

slo*_*ife 34 javascript asp.net asp.net-ajax

在ASP.NET AJAX ModalPopupExtender具有OnCancelScriptOnOkScript属性,但它似乎并不有一个OnShowScript属性.我想指定每次弹出窗口时运行的javascript函数.

在过去的情况下,我设置TargetControlID为一个虚拟控件并提供我自己的控件,首先执行一些JS代码,然后使用JS方法显示弹出窗口.但在这种情况下,我将显示客户端和服务器端代码的弹出窗口.

有人知道这样做的方法吗?

顺便说一下,我需要这个,因为我在模态中有一个文本框,我想制作一个TinyMCE编辑器.但是TinyMCE init脚本不适用于隐形文本框,因此我必须找到一种方法来在模式显示时运行它

lom*_*axx 29

嗯...我很确定 MPE会显示一个事件...这是我的头脑,但我认为你可以在page_load上为显示的事件添加一个事件处理程序

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

function SetFocus()
{
    $get('TriggerClientId').focus();
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否会帮助你从服务器端调用它

  • 真棒!我还必须在我的页面中添加`Sys.Application.add_load(pageLoad);`以使它触发`pageLoad()` (6认同)

Joh*_*ard 14

这是在标记中执行此操作的简单方法:

<ajaxToolkit:ModalPopupExtender 
                ID="ModalPopupExtender2" runat="server" 
                TargetControlID="lnk_OpenGame" 
                PopupControlID="Panel1" 
                BehaviorID="SilverPracticeBehaviorID"  >
            <Animations>
                <OnShown>
                     <ScriptAction Script="InitializeGame();" />  
                </OnShown>
            </Animations>                
</ajaxToolkit:ModalPopupExtender>
Run Code Online (Sandbox Code Playgroud)

  • 我收到以下错误:"TargetControlID上的动画="hiddenButtonPopup1"使用不存在或无法设置的属性AjaxControlToolkit.ModalPopupExtender.OnShown".hiddenButtonPopup1是一个分配给TargetControlID的隐藏按钮. (2认同)

小智 11

您应该使用ModalPopupExtender 的BehaviorIDmpeBID.

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

function HideMediaPlayer() {
    var divMovie = $get('<%=divMovie.ClientID%>');
    divMovie.style.display = "none";
}
Run Code Online (Sandbox Code Playgroud)