2012-03-28 125 views
0

爲什麼不打開對話框 「elete-dialog2」 粗體運行線時(間**)爲什麼不打開對話框

<script type="text/javascript"> 
    $(function() { 
     var deleteLinkObj; 
     // delete Link 
     $('.delete-link').click(function() { 
      deleteLinkObj = $(this); //for future use 
      $('#delete-dialog').dialog('open'); 
      return false; // prevents the default behaviour 
     }); 

     //definition of the delete dialog. 
     $('#delete-dialog').dialog({ 
      autoOpen: false, width: 350, resizable: false, modal: true, //Dialog options 
      buttons: { 
       "Confirm": function() { 
        $.post(deleteLinkObj[0].href, function (data) { //Post to action 
         if (data == '@Boolean.TrueString') { 
          deleteLinkObj.closest("tr").hide('slow'); //Hide Row 
          //(optional) Display Confirmation 
         } 
         else { 
          //this is the line 
          **$('#delete-dialog2').dialog('open');** 
         } 
        }); 
        $(this).dialog("close"); 
       }, 
       "Cancel": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
$('#delete-dialog2').dialog({ 
      autoOpen: false, width: 350, resizable: false, modal: true, //Dialog options 
      buttons: { 

       "Accept": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 


    }); 
</script> 

的觀點:

<h2>UNIVERSITIES</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
@Html.ValidationSummary(true) 
<table> 
    <tr> 
     <th> 
      Name 
     </th> 
     <th></th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id=item.IdUniversidad }) | 
      @Html.ActionLink("Delete", "Delete", new { id = item.IdUniversidad }, new { @class = "delete-link" }) 
     </td> 
    </tr> 
} 

</table> 
<div id="delete-dialog" title="Information"> 
<p>Are you sure you want to delete this?</p> 
</div> 

<div id="delete-dialog2" title="Error"> 
<p>Ooops... Something failed</p> 
</div> 

它只顯示帶有確認和取消按鈕的對話框,但在試圖顯示cuandro時,沒有顯示接受按鈕的對話框

首先,如果打開('#delete-dialog'),則不會打開第二個對話框(' #delete-dialog2')執行時在進入到其他的執行在這部分進入到別的if (data == '@Boolean.TrueString') { deleteLinkObj.closest("tr").hide('slow'); //Hide Row //(optional) Display Confirmation } else { **$('#delete-dialog2').dialog('open');** }

祝福

+0

呈現的HTML對調試似乎主要是JavaScript問題更有用;解析asp.net視圖以查看將「呈現」是什麼,我寧願避免。我不認爲它的大部分都是結果性的(對話格在那裏和可見),但你永遠不知道。 – 2012-03-28 03:23:57

+0

確保您在頁面末尾添加了js,否則,可能發生的情況是您的js在實際元素存在之前全部渲染 – SpYk3HH 2012-03-28 03:52:43

+0

@ SpYk3HH JS函數包裝在document.ready函數中,因此頁面應該被渲染。 Ajax引入的內容是另一回事,但示例顯示了一個呈現的頁面,而不是Ajax請求的頁面。 – 2012-03-28 17:06:29

回答

1

這種快速測試,似乎很好地工作:

http://jsfiddle.net/bES2X/1/

有與你不同的兩個東西:

  1. 使用的確切標記。我有點揣測。如果我正確理解了您的ASP.NET代碼,那麼您可能會在行中使用多個ID,這是無效的標記。

  2. $ post函數(我只是硬編碼一個失敗的場景)。看起來好像href將正確評估如果你想要的是第一個數據鏈接的HREF。那麼@Boolean.TrueString有條件嗎?試着看這個表達式或console.log來測試。