2012-01-09 7 views
30

Я пытаюсь использовать диалог jQueryUI в приложении MVC3, но имею проблему с ним. Диалог, который у меня есть, - это загрузка частичного представления, в котором пользователь либо отредактирует, либо создаст новый элемент. Это работает нормально, но если я попытаюсь сохранить или обновить элемент, или если я попытаюсь закрыть его, я получу сообщение в заголовке.Uncaught TypeError: Object [object Object] не имеет диалогового окна метода

Я добавил все необходимые файлы .js, но все еще получаю ошибку. Я также использовал firebug, но до сих пор не могу найти причину ошибки.

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

жаль, паста была неправильной. – Nollaig

ответ

61

проблема в том, что я ссылки «jquery-1.5.1.min.js» дважды. Однажды в _Layout.cshtml, а также в частичном представлении, которое я загружал. , Удалена ссылка в частичном представлении и отсортирована.

5

Похоже, что браузер не загружен jQueryUI, убедитесь, что он находится в вашем DOM

+0

Он загрузил jqueryui, поскольку я вижу это с помощью firebug. Кроме того, диалоговое окно загружает первый раз без проблем. Проблема заключается в том, чтобы закрыть его, используя $ (this) .dialog («закрыть»), а также снова открыть его. – Nollaig

+1

Итак, я думаю, что '$ (this)' не указывает на элемент, содержащий объект диалога. До '$ (this) .dialog ('close')' test '$ (this)' by' console.log (this) ' –

+1

И, я думаю, диалоговое окно $ ('# popup'). ('Close'). , будет правильно –

0

В моем случае это было то, что

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