Cómo especificar el código javascript a ejecutar cuando ModalPopupExtender se muestra

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

Pregunta

El ASP.NET AJAX ModalPopupExtender ha OnCancelScript y OnOkScript propiedades, pero no parecen tener un OnShowScript de la propiedad.Me gustaría especificar una función de javascript para que se ejecute cada vez que la ventana emergente que se muestra.

En situaciones del pasado, me puse el TargetControlID a un muñeco de control y ofrecer mi propio control que primero hace el código JS y, a continuación, utiliza el JS métodos para mostrar la ventana emergente.Pero en este caso voy a mostrar la ventana emergente del cliente y en el servidor de código.

Alguien sabe de una forma de hacer esto?

Por CIERTO, yo necesitaba esto porque tengo un textbox en el modal que quiero hacer un editor TinyMCE.Pero el TinyMCE init script no funciona en invisible cuadros de texto, así que tuve que encontrar una manera para que se ejecute en el momento en que el modal se muestra

¿Fue útil?

Solución

hmmm...Estoy bastante seguro de que que hay una muestra de eventos para la MPE...esta es la parte superior de mi cabeza, pero creo que se puede agregar un controlador de eventos para el evento page_load

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

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

no estoy seguro de tho si esto le ayudará con la llamada es desde el lado del servidor tho

Otros consejos

Aquí está una manera simple de hacerlo en el marcado:

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

Usted debe utilizar el BehaviorID valor mpeBID de su ModalPopupExtender.

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

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

Si usted está usando un botón o hipervínculo, enlace o algo para activar la ventana emergente para mostrar, podría también agregar un controlador para el evento onClick del gatillo, que todavía debe fuego el modal popup y ejecutar el javascript al mismo tiempo?

El ModalPopupExtender modifica el botón de hipervínculo que le diga a ser el "gatillo" del elemento.El onclick script que añadir estímulos antes de la ventana emergente que se muestra.Quiero secuencia de comandos para el fuego después de que la ventana emergente que se muestra.

También, todavía me deja con el problema de que cuando me muestran el modal desde el lado del servidor.

TinyMCE trabajo invisible cuadro de texto si se puede ocultar con css (display:none;) Realizar un evento "onclick" en TargetControlID, para init TinyMCE, si usted utiliza también un updatepanel

Para los dos formularios modales:

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

El lado del servidor: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();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top