w3schools modal example ejemplos close jquery dialog jquery-ui-dialog

modal - Diálogo jquery ui: no se pueden invocar métodos de diálogo antes de la inicialización



jquery popup window (8)

Entonces usas esto:

var theDialog = $("#divDialog").dialog(opt); theDialog.dialog("open");

y si abre una Vista parcial de MVC en Diálogo, puede crear en índice un botón oculto y un evento de clic de JQUERY:

$("#YourButton").click(function() { theDialog.dialog("open"); OR theDialog.dialog("close"); });

Luego, dentro de la vista parcial html, usted llama al botón de activación, haga clic en:

$("#YouButton").trigger("click")

nos vemos.

Tengo una aplicación en jquery 1.5 con diálogos bien trabajados. Si bien tengo muchos manejadores activos, cambié esto a .on. Para eso, tengo que actualizar jquery (ahora 1.8.3 y jquerui 1.9.1).

Ahora, obtuve: Error: cannot call methods on dialog prior to initialization; attempted to call method ''close'' Error: cannot call methods on dialog prior to initialization; attempted to call method ''close''

A continuación está el código:

Javascript

var opt = { autoOpen: false, modal: true, width: 550, height:650, title: ''Details'' }; $(document).ready(function() { $("#divDialog").dialog(opt); $("#divDialog").dialog("open"); ...

código HTML

<div id="divDialog"> <div id="divInDialog"></div> </div>

¿Alguna idea de por qué esto podría estar sucediendo?


Esto también es un trabajo alternativo:

$("div[aria-describedby=''divDialog''] .ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-icon-only.ui-dialog-titlebar-close").click();


Obtuve este error cuando solo actualicé la biblioteca jquery sin actualizar la biblioteca jqueryui en paralelo. Estaba usando jquery 1.8.3 con jqueryui 1.9.0. Sin embargo, cuando actualicé jquery 1.8.3 a 1.9.1 obtuve el error anterior. Cuando comenté las líneas de método .close ofensivas, arrojó un error sobre no encontrar .browser en la biblioteca de jquery que estaba en desuso en jquery 1.8.3 y eliminado de jquery 1.9.1. Así que básicamente, la biblioteca jquery 1.9.1 no era compatible con la biblioteca jquery ui 1.9.0 a pesar de que la página de descarga de jquery ui decía que funcionaba con jquery 1.6+. Básicamente, hay errores no informados cuando se intenta usar versiones diferentes de los dos. Si utilizas la versión de jquery que viene incluida con la descarga de jqueryui, estoy seguro de que estarás bien, pero es cuando comienzas a usar diferentes versiones que estás fuera de lo común y obtienes errores como este. Entonces, en resumen, este error proviene de versiones mal adaptadas (en mi caso, de todos modos).


Prueba esto en cambio

$(document).ready(function() { $("#divDialog").dialog(opt).dialog("open"); });

También puedes hacer:

var theDialog = $("#divDialog").dialog(opt); theDialog.dialog("open");

Esto se debe a que el cuadro de diálogo no está almacenado en $(''#divDialog'') , sino en un nuevo div creado al vuelo y devuelto por la función .dialog(opt) .


Recibí este mensaje de error porque tenía la etiqueta div en la vista parcial en lugar de la vista principal


Si desea abrir el cuadro de diálogo inmediatamente cuando se inicializa el cuadro de diálogo o la página está lista, también puede establecer el parámetro autoOpen en true en el objeto de opciones de diálogo:

var opt = { autoOpen: true, modal: true, width: 550, height:650, title: ''Details'' };

Por lo tanto, no tiene que llamar al diálogo `$ (" # divDialog "). (" Abrir ");

Cuando se inicializa el objeto de diálogo, el diálogo se abre automáticamente.


Si no puede actualizar jQuery, obtendrá:

Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method ''close''

Puede solucionarlo de esta manera:

$(selector).closest(''.ui-dialog-content'').dialog(''close'');

O bien, si controlas la vista y sabes que no hay ningún otro diálogo en uso en toda la página, podrías hacer lo siguiente:

$(''.ui-dialog-content'').dialog(''close'');

Solo recomendaría hacer esto si el uso closest provoca un problema de rendimiento. Probablemente haya otras formas de solucionarlo sin cerrar globalmente todos los cuadros de diálogo.


Simplemente tuve que agregar el ScriptManager a la página. Problema resuelto.