Wie wird angegeben, dass Javascript ausgeführt werden soll, wenn ModalPopupExtender angezeigt wird

  • Der ASP.NET AJAX ModalPopupExtender hat die Eigenschaften OnCancelScript und OnOkScript, aber es scheint keine Eigenschaft OnShowScript zu haben. Ich möchte eine Javascript-Funktion angeben, die jedes Mal ausgeführt wird, wenn das Popup angezeigt wird.

    In früheren Situationen habe ich TargetControlID auf ein Dummy-Steuerelement gesetzt und mein eigenes Steuerelement zur Verfügung gestellt Das führt zunächst etwas JS-Code aus und verwendet dann die JS-Methoden, um das Popup anzuzeigen. In diesem Fall zeige ich jedoch das Popup aus dem Code des Clients und des Servers.

    Hat jemand eine Möglichkeit, dies zu tun?

    Übrigens, ich brauchte das, weil ich im Modal ein Textfeld habe, das ich einen TinyMCE-Editor erstellen möchte. Das TinyMCE-Init-Skript funktioniert jedoch nicht bei unsichtbaren Textfeldern. Daher musste ich einen Weg finden, es auszuführen, als das Modal angezeigt wurde

    05 April 2018
    Aliaksandr SushkevichL2.IO
8 answers
  • hmmm ... Ich bin ziemlich sicher , dass es ein Ereignis für das MPE gibt ... das ist aus meinem Kopf, aber ich denke, Sie können ein Ereignis hinzufügen Handler für das angezeigte Ereignis unter Page_load

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

    Ich bin mir nicht sicher, ob dies Ihnen beim Aufruf helfen wird von der Serverseite aus

    08 August 2008
    lomaxx
  • Dies ist eine einfache Möglichkeit, dies in Markup zu tun:

     <ajaxToolkit:ModalPopupExtender 
                    ID="ModalPopupExtender2" runat="server" 
                    TargetControlID="lnk_OpenGame" 
                    PopupControlID="Panel1" 
                    BehaviorID="SilverPracticeBehaviorID"  >
                <Animations>
                    <OnShown>
                         <ScriptAction Script="InitializeGame();" />  
                    </OnShown>
                </Animations>                
    </ajaxToolkit:ModalPopupExtender>
     
    02 March 2012
    John Ward
  • Sie sollten den BehaviorID Wert mpeBID Ihres ModalPopupExtender verwenden.

     function pageLoad() {
        $find('mpeBID').add_shown(HideMediaPlayer);
    }
    
    function HideMediaPlayer() {
        var divMovie = $get('<%=divMovie.ClientID%>');
        divMovie.style.display = "none";
    }
     
    05 April 2018
    3 revs, 2 users 97%Mircea Dunka
  • TinyMCE arbeitet an unsichtbarem Textfeld, wenn Sie es mit css ausblenden (display: none;) Sie erstellen ein "onclick" -Ereignis für TargetControlID, für init TinyMCE, wenn Sie auch ein updatepanel verwenden

    27 January 2010
    Brunz
  •  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();
    }
     
    07 February 2016
    Markus SafarMHop
  • Wenn Sie eine Schaltfläche, einen Hyperlink oder etwas anderes verwenden, um das Popup auszulösen, können Sie dem onClick-Ereignis des Triggers einen zusätzlichen Handler hinzufügen, der das modale Popup weiterhin auslösen und das Javascript auf dem auslösen soll zur gleichen Zeit?

    08 August 2008
    lomaxx
  • Der ModalPopupExtender ändert die Schaltfläche / den Hyperlink, von dem Sie sagen, dass er das "Trigger" -Element ist. Das Onclick-Skript, das ich hinzugefügt habe, wird ausgelöst, bevor das Popup angezeigt wird. Ich möchte, dass das Skript nach dem Anzeigen des Popup-Fensters ausgelöst wird.

    Außerdem bleibt mir immer noch das Problem, wenn ich das Modal von Server-Seite aus sehe

    08 August 2008
    slolife
  • Für zwei modale Formulare:

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

    Serverseite: Behandlung

     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);
    }
     
    07 February 2016
    Markus SafarMHop