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

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

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

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

===============>>#1 票数:29 已采纳

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

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

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

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

===============>>#2 票数:14

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

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

===============>>#3 票数:11

您应该使用ModalPopupExtender的BehaviorIDmpeBID

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

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

===============>>#4 票数: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();
}

===============>>#5 票数: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();
}

服务器端:行为

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

===============>>#6 票数:2

如果你用css隐藏它,TinyMCE会在隐藏文本框上工作(display:none;)如果你还使用了updatepanel,你可以在TargetControlID上为init TinyMCE创建一个“onclick”事件

===============>>#7 票数:2

如果您使用按钮或超链接或其他东西触发弹出窗口显示,您是否还可以为触发器的onClick事件添加一个额外的处理程序,该事件应该仍然触发模式弹出窗口并同时运行javascript?

===============>>#8 票数:2

ModalPopupExtender修改您告诉它为“触发器”元素的按钮/超链接。 我在弹出窗口显示之前添加触发器的onclick脚本。 我希望在显示弹出窗口后触发脚本。

另外,还有我从服务器端显示模态的问题。

  ask by slolife translate from so

未解决问题?本站智能推荐: