如何显示ModalPopupExtender时指定要运行的JavaScript

ysit 发布于 2018-03-06 asp.net 最后更新 2018-03-06 01:04 532 浏览

ASP.NET AJAX ModalPopupExtender具有OnCancelScript和OnOkScript属性,但它似乎没有OnShowScript属性。我想指定一个JavaScript函数来在每次显示弹出窗口时运行。 在过去的情况下,我将TargetControlID设置为虚拟控件,并提供自己的控件,首先执行一些JS代码,然后使用JS方法显示弹出窗口。但在这种情况下,我显示了客户端和服务器端代码的弹出窗口。 任何人都知道如何做到这一点? 顺便说一句,我需要这个,因为我有一个文本框中的模式,我想制作一个TinyMCE编辑器。但TinyMCE初始化脚本不适用于不可见的文本框,所以我必须找到一种方式在显示模式时运行它

已邀请:

ramet

赞同来自:

如果你正在使用一个按钮或超链接或触发弹出窗口显示,你是否也可以添加一个额外的处理程序到触发器的onClick事件,它仍然应该触发模式弹出并同时运行JavaScript?

ysit

赞同来自:

ModalPopupExtender修改您告诉它为“触发”元素的按钮/超链接。在显示弹出窗口之前,我添加了触发器的onclick脚本。显示弹出窗口后,我想让脚本触发。 而且,当我从服务器端展示模态时,仍然会给我带来问题。

ramet

赞同来自:

嗯...我非常确定 MPE有一个显示的事件...这是我的头顶,但我认为你可以添加一个事件处理程序到显示的事件上的Page_Load

function pageLoad()
{
    var popup = $find('ModalPopupClientID');
    popup.add_shown(SetFocus);
}
function SetFocus()
{
    $get('TriggerClientId').focus();
}
我不确定这是否会帮助你从服务器端调用它

vvelit

赞同来自:

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

xporro

赞同来自:

您应该使用ModalPopupExtender的BehaviorID值(“mpeBID”)。

function pageLoad() {
    $find('mpeBID').add_shown(HideMediaPlayer);
}
function HideMediaPlayer() {
    var divMovie = $get('<%=divMovie.ClientID%>');
    divMovie.style.display = "none";
}

equi

赞同来自:

这是一个简单的方法来做标记:

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

det

赞同来自:

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();
}

det

赞同来自:

对于两种模态形式: CODE_0的PLACEHOLDER 服务器端:后面 PLACEHOLDER FOR_CODE_1