2010-06-09 1 views
0

У меня есть следующий код.SimpleModal, никакого ответа от кнопки ASP.NET

$(document).ready(function() { 
     $('#btnOpen').click(function(e) { 
      $('#content').modal({ 
       onOpen: function(dialog) { 
        dialog.overlay.fadeIn('slow', function() { 
         dialog.data.hide(); 
         dialog.container.fadeIn('slow', function() { 
          dialog.data.slideDown('slow'); 

         }); 
        }); 
       }, 
       onClose: function(dialog) { 
        dialog.data.fadeOut('slow', function() { 
         dialog.container.slideUp('slow', function() { 
          dialog.overlay.fadeOut('slow', function() { 
           $.modal.close(); // must call this! 
          }); 
         }); 
        }); 
       } 
      }); 

     }); 
     $('#btnClose').click(function(e) { 
      $.modal.close(); 
     }); 

Если я использую <a hrf ="#" id="btnOpen">Open</a>, он отлично работает. Если я заменю кнопку ASP.net,
<asp:Button ID="btnOpen" runat="server" Text="Open" /> ничего не случилось ... Любая помощь, пожалуйста?

ответ

0

Вот рабочие коды:

$('#<%= btnOpen.ClientID %>').click(function(e) { 
      e.preventDefault(); 
      $('#content').modal({ 
       onOpen: function(dialog) { 
        dialog.overlay.fadeIn('slow', function() { 
         dialog.data.hide(); 
         dialog.container.fadeIn('slow', function() { 
          dialog.data.slideDown('slow'); 

         }); 
        }); 
       }, 
       onClose: function(dialog) { 
        dialog.data.fadeOut('slow', function() { 
         dialog.container.slideUp('slow', function() { 
          dialog.overlay.fadeOut('slow', function() { 
           $.modal.close(); // must call this! 
          }); 
         }); 
        }); 
       } 
      }); 

     }); 

только два изменения 1: Я изменил название на ('#<%= btnOpen.ClientID %>').click(...); 2: Я добавил e.preventDefault();

Однако не постбэк из осины кнопка разрешена

1

ASP.Net автоматически генерирует уникальные идентификаторы для серверных элементов управления на основе контейнеров элементов управления.

Следовательно, сгенерированный HTML на самом деле не имеет элемента #btnOpen.

Вы должны использовать ASP.Net сгенерировал идентификатор клиента, например:

$('#<%= btnOpen.ClientID %>').click(...); 

В качестве альтернативы, в ASP.Net 4.0, вы можете установить Контрольный ClientIDMode property для предотвращения ASP.Net от создания уникального идентификатора:

<asp:Button ID="btnOpen" runat="server" Text="Open" ClientIDMode="Static" /> 
0

проблема заключается в том, что элементы управления ASP.Net добавить имя родительского контейнера для их ID, так что если вы источник вида HTML на сгенерированной странице вы увидите, что идентификатор кнопки не btnOpen но parentContainerID_btnOpen.

Если вы используете ASP.Net 4, у вас может быть кнопка, которая не добавляет родительское имя управления, задавая параметр, в противном случае вам нужно изменить код javascript, чтобы использовать правильный идентификатор.

+0

Ну, честно говоря, я проверил исходный код. Кнопка asp: просто отображается как btnOpen, а не parentContainerID_btnOpen. Я попробовал самую легкую функцию оповещения, и она работает. Это означает, что jQuery может найти мою кнопку asp правильно. – HorseKing