2012-01-09 11 views
30

Estoy tratando de usar el cuadro de diálogo jQueryUI en una aplicación MVC3 pero tengo un problema con él. El cuadro de diálogo que tengo está cargando una vista parcial donde el usuario editará o creará un nuevo elemento. Esto funciona bien, pero si trato de guardar o actualizar el artículo, o si trato de cerrarlo, aparece el mensaje en el título.TypeError no capturado: Objeto [object Object] no tiene el método 'dialog'

He agregado todos los archivos .js requeridos pero sigo recibiendo el error. También he usado Firebug pero todavía no puedo encontrar por qué está sucediendo el error.

HTML

<span class="EditLink ButtonLink" addressId="@addr.Id">Modify this Address</span> 
<div id="popup"></div> 

JavaScript

$(document).ready(function() { 
    var id = 0; 

    //define config object 
    var dialogOpts = { 
     title: "Edit item", 
     modal: true, 
     autoOpen: false, 
     height: 500, 
     width: 500, 
     open: function() { 
      $("#popup").load("/partialviewtoload/" + id); 
     }, 
     buttons: { 
      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     } 
    }; 

    $("#popup").dialog(dialogOpts); //end dialog 

    $('.EditLink').click(function() { 
     id = $(this).attr("itemId"); 
     $("#popup").dialog("open"); 
     return false; 
    });  
}); 
+0

Lo sentimos, la pasta era incorrecta. – Nollaig

Respuesta

61

problema era que yo estaba referenciación "jquery-1.5.1.min.js" dos veces. Una vez en _Layout.cshtml y también en la vista parcial que estaba cargando. . Se eliminó la referencia en la vista parcial y se ordenó.

5

Parece que el navegador no han cargado jQueryUI, asegúrese de que está en su DOM

+0

Ha cargado jqueryui como puedo verlo usando firebug. Además, el diálogo carga la primera vez, no hay problema. El problema es tratar de cerrarlo usando $ (this) .dialog ('close') y también reabrirlo. – Nollaig

+1

Entonces, creo que '$ (this)' no apunta a un elemento que contiene el objeto de diálogo. Antes '$ (this) .dialog ('close')' test '$ (this)' por 'console.log (this)' –

+1

Y, creo, $ ('# popup'). Dialog ('close') , será correcto –

0

En mi caso fue que

you should include first grid.locale-en.js and then jquery.jqGrid.min.js.

Cuestiones relacionadas