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é
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
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>
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";
}
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?
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.
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
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);
}
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();
}