Comment spécifier javascript pour exécuter lorsque ModalPopupExtender est affiché

le ASP.NET AJAX ModalPopupExtender a OnCancelScript et OnOkScript propriétés, mais il ne semble pas avoir un OnShowScript propriété. J'aimerais spécifier une fonction javascript pour exécuter chaque fois que le popup est affiché.

dans des situations passées, j'ai mis le TargetControlID à un contrôle fictif et fournir mon propre contrôle qui d'abord fait du code JS et ensuite utilise les méthodes JS pour afficher le popup. Mais dans ce cas, je montre le popup du côté client et du côté serveur code.

Quelqu'un sait comment faire ça?

BTW, j'en avais besoin car j'ai une boîte de texte dans le modal que je veux faire un éditeur TinyMCE. Mais le script D'initialisation TinyMCE ne fonctionne pas sur les boîtes de texte invisibles, donc j'ai dû trouver un moyen de l'exécuter au moment où le modal a été montré

29
demandé sur Aliaksandr Sushkevich 2008-08-08 03:37:30

8 réponses

hmmm... Je suis sûr qu'il y a un événement affiché pour le MPE... c'est du haut de ma tête, mais je pense que vous pouvez ajouter un gestionnaire d'événements pour l'montré événement page_load

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

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

Je ne suis pas sûr que cela vous aidera à l'appeler du côté du serveur tho

27
répondu lomaxx 2008-08-08 00:03:41

Voici une façon simple de le faire dans markup:

<ajaxToolkit:ModalPopupExtender 
                ID="ModalPopupExtender2" runat="server" 
                TargetControlID="lnk_OpenGame" 
                PopupControlID="Panel1" 
                BehaviorID="SilverPracticeBehaviorID"  >
            <Animations>
                <OnShown>
                     <ScriptAction Script="InitializeGame();" />  
                </OnShown>
            </Animations>                
</ajaxToolkit:ModalPopupExtender>
11
répondu John Ward 2012-03-02 07:24:20

Vous devez utiliser le BehaviorID valeur mpeBID de votre ModalPopupExtender.

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

function HideMediaPlayer() {
    var divMovie = $get('<%=divMovie.ClientID%>');
    divMovie.style.display = "none";
}
9
répondu Mircea Dunka 2018-04-05 17:37:24

si vous utilisez un bouton ou un lien hypertexte ou quelque chose pour déclencher le popup à afficher, pouvez-vous aussi ajouter un handler supplémentaire à l'événement onClick du trigger qui devrait toujours démarrer le popup modal et exécuter le javascript en même temps?

1
répondu lomaxx 2008-08-07 23:44:27

le ModalPopupExtender modifie le bouton / lien hypertexte que vous lui dites d'être l'élément "trigger". Le script onclick que j'ajoute déclenche avant que le popup ne soit affiché. Je veux que script démarre après que le popup soit montré.

en outre, me laisse toujours avec le problème de quand je montre le modal du côté du serveur.

1
répondu slolife 2008-08-07 23:53:48

TinyMCE travailler sur invisible textbox si vous le cachez avec css (display: none;) Vous faites un événement "onclick" sur TargetControlID, pour INIT TinyMCE, si vous utilisez aussi un updatepanel

1
répondu Brunz 2010-01-27 00:34:17
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();
}

côté Serveur: 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);
}
1
répondu Mormon SUD 2016-02-07 17:52:32
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();
}
1
répondu Mormon SUD 2016-02-07 17:53:11