38

ASP.NET AJAX ModalPopupExtenderOnCancelScriptOnOkScript属性,但它似乎没有OnShowScript属性。我想指定一个javascript函数在每次显示弹出窗口时运行。

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

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

顺便说一句,我需要这个,因为我在模态中有一个文本框,我想制作一个 TinyMCE 编辑器。但是 TinyMCE 初始化脚本不适用于不可见的文本框,所以我必须找到一种在显示模式时运行它的方法

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 的BehaviorIDmpeBID

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

如果您使用 css (display:none;) 隐藏它,TinyMCE 将在不可见的文本框上工作您在 TargetControlID 上创建一个“onclick”事件,用于 init TinyMCE,如果您还使用更新面板

于 2010-01-27T00:34:17.417 回答
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

对于两种模态形式:

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 回答