2012-03-28 2 views
0

Почему не открывается диалоговое окно «далить-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, чтобы увидеть, что «будет» оказано, - это то, что я бы предпочел избежать. Я НЕ ДУМАЮ, что большинство из них является косвенным (диалоги div div там и видны), но вы никогда не знаете. –

+0

убедитесь, что вы добавляете js в конце страницы, в противном случае, что может произойти, ваш js полностью выполняет визуализацию до фактического существования элемента. – SpYk3HH

+0

@ SpYk3HH. Функции JS завернуты в функцию document.ready, поэтому страница должна быть оказанным. Контент, представленный Ajax, - это еще одна история, но образцы показывают отображаемую страницу, а не страницу, запрошенную Ajax. –

ответ

1

Это быстрый тест, кажется, работает хорошо:

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

Есть два разных от ваших вещей:

  1. Точная разметка используется. Я немного догадался. Если я правильно понимаю ваш код ASP.NET, вы можете использовать несколько идентификаторов для своих строк, что является недопустимой разметкой.

  2. Функция $ post (я просто запрограммировал неудачный сценарий). Кажется, что href будет правильно оцениваться. IF то, что вы хотите, это HREF первой линии передачи данных. Итак, тогда является условным для разработки @Boolean.TrueString? Попробуйте просмотреть это выражение или console.log для проверки.

Смежные вопросы