2011-11-01 41 views
0

我正試圖解決我在ASP.Net應用程序中使用jQuery對話框時遇到的問題。對象#<Object>沒有方法'對話框'

我有一個頁面,有兩個對話框,tos_texttos_thankyou這當然是簡單的<div>標籤與內容顯示。

首先,我使用的是谷歌CDN引用的jQuery:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 

我遇到的問題是,當我嘗試連接該jQuery的對話框法,瀏覽器宣稱的對話框方法確實不存在於對象上。由於我使用ASP.Net,我在Page_PreRender事件處理程序有條件地注入的JavaScript在運行時爲這樣:

protected void Page_PreRender(object sender, EventArgs e) 
    { 
     ScriptManager.RegisterStartupScript(this, GetType(), "RegisterThankYouDialog", 
      "\n<script type='text/javascript'>$(function() { $('#tos_thankyou').dialog({ autoOpen: false, modal: true, buttons: { Ok : function() { $(this).dialog('close'); } } }); });</script>\n", false); 

     ScriptManager.RegisterStartupScript(this, GetType(), "RegisterTOSDialog", 
      "\n<script type='text/javascript'>$(function() { $('#tos_text').dialog({ autoOpen: false, modal: true, }); });</script>\n", false); 

     if (Show || ForceShow) 
     { 
      ScriptManager.RegisterStartupScript(this, GetType(), "ShowTOSDialog", 
       "\n<script type='text/javascript'>$(function() { $('#tos_text').dialog('open'); });</script>\n", false); 
     } 

     if (ShowThankYou) 
     { 
      ScriptManager.RegisterStartupScript(this, GetType(), "ShowThankYou", 
       "\n<script type='text/javascript'>$(function() { $('#tos_thankyou').dialog('open'); });</script>\n", false); 
     } 
    } 

這(包括從Chrome JS控制檯,有誤差)所呈現的代碼:

<script type="text/javascript"> 
//<![CDATA[ 
(function() {var fn = function() {$get("ctl00_smScripts_HiddenField").value = '';Sys.Application.remove_init(fn);};Sys.Application.add_init(fn);})();//]]> 
</script> 
<script type='text/javascript'>new Sys.WebForms.Menu({ element: 'ctl00_NavigationMenu', disappearAfter: 500, orientation: 'horizontal', tabIndex: 0, disabled: false });</script> 
<script type='text/javascript'>$(function() { $('#tos_thankyou').dialog({ autoOpen: false, modal: true, buttons: { Ok : function() { $(this).dialog('close'); } } }); });</script> 
default.aspx:610Uncaught TypeError: Object [object Object] has no method 'dialog' 

<script type='text/javascript'>$(function() { $('#tos_text').dialog({ autoOpen: false, modal: true, }); });</script> 

<script type='text/javascript'>$(function() { $('#tos_text').dialog('open'); });</script> 

<script type="text/javascript"> 
//<![CDATA[ 
Sys.Application.add_init(function() { 
    $create(Sys.Extended.UI.ModalPopupBehavior, {"BackgroundCssClass":"modalBackground","CancelControlID":"ctl00_MainContent_btnPrivacyOK","PopupControlID":"ctl00_MainContent_pnlPrivacy","dynamicServicePath":"/default.aspx","id":"ctl00_MainContent_ModalPopupExtender1"}, null, null, $get("ctl00_MainContent_btnPrivacy")); 
}); 
//]]> 
</script> 
+0

怎麼樣發佈引發錯誤的代碼 –

回答

5

dialog方法是jquery-ui腳本的一部分。添加到您的網頁:

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

您可能還需要添加相關樣式表:

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
0

需要加載jQuery用戶界面得到了「對話」。這裏是谷歌的CDN

jQuery UI的名字:jQueryUI的最新版本:16年8月1日(查看舊版本) 負荷要求:的google.load( 「jQueryUI的」, 「16年8月1日」);演員: 未壓縮:真正的(如在的google.load( 「jQueryUI的」, 「16年8月1日」, {未壓縮:真});路徑: https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js 路徑(U): https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js 網站:http://jquery.com/注:此庫依賴於jQuery的。你 還必須加載此模塊之前加載jQuery的。版本1.8.3不 由於託管其壽命短,和別名1.8.3實際加載 1.8.4。