Wie zu geben Sie in javascript ausgeführt werden, wenn ModalPopupExtender angezeigt wird

StackOverflow https://stackoverflow.com/questions/5482

Frage

Die ASP.NET AJAX ModalPopupExtender hat OnCancelScript und OnOkScript Eigenschaften, aber es scheint nicht zu haben ein OnShowScript Eigenschaft.Ich würde gerne geben Sie eine javascript-Funktion, um jedes mal ausgeführt, wenn das popup angezeigt wird.

In der Vergangenheit Situationen, habe ich die TargetControlID ein dummy-Steuerelement und stellen meine eigene Steuerung, die erste hat einige JS-code und verwendet dann den JS-Methoden zu zeigen Sie das popup.Aber in diesem Fall, ich zeige popup-von client-und server-side-code.

Wer kennt eine Möglichkeit, dies zu tun?

BTW, ich brauchte dies, weil ich ein Textfeld, in der modale, dass ich das machen will, einen TinyMCE-editor.Aber der TinyMCE init-script funktioniert nicht auf unsichtbare Textfelder, also musste ich einen Weg finden, es zum laufen zu der Zeit das modal angezeigt wurde

War es hilfreich?

Lösung

hmmm...Ich bin ziemlich sicher dass es einen gezeigt Ereignis für die MPE...dies ist aus der Spitze von meinem Kopf, aber ich denke, Sie können einen Ereignishandler hinzufügen, um das gezeigte Veranstaltung auf page_load

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

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

ich bin mir nicht sicher, tho, ob dies wird Ihnen helfen, mit dem Aufruf vom server side tho

Andere Tipps

Hier ist eine einfache Möglichkeit, es zu tun in der markup:

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

Sollten Sie die BehaviorID Wert mpeBID Ihre ModalPopupExtender.

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

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

Wenn Sie eine Schaltfläche oder einen hyperlink oder etwas auslösen, die popup-anzeigen, könnte Sie auch eine zusätzliche handler für das onClick-Ereignis der Auslöser der sollte noch Feuer das modal popup und führen Sie die javascript-zur gleichen Zeit?

Die ModalPopupExtender ändert den button/Link, der Sie sagen, es sei die "trigger" - element.Das onclick-Skript, das ich Trigger hinzufügen, bevor das popup angezeigt wird.Ich will Skript ausgelöst werden, nachdem das popup angezeigt wird.

Auch, noch immer lässt mich mit dem problem, wenn ich zeige, das modal von server-Seite.

TinyMCE arbeiten auf unsichtbare textbox, wenn Sie es verstecken mit css (display:none;) Machen Sie eine "onclick" - event auf TargetControlID, für TinyMCE init, wenn Sie auch ein updatepanel

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

Server-Seite: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);
}
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();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top