Wie zu geben Sie in javascript ausgeführt werden, wenn ModalPopupExtender angezeigt wird
-
08-06-2019 - |
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
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();
}