Отключить с помощью кнопки отправки jQuery в шаблоне мастера ASP.NET - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть приложение ASP.NET Web Forms, которое использует элемент управления Wizard Template .

В моем мастере есть четыре страницы (формы), и я хотел бы использовать jQuery , чтобы отключить кнопку отправки на последней странице (кнопки на других страницах просто следующая и предыдущая ). Я хочу сделать это, чтобы пользователь больше не нажимал накнопка, заставляющая формы отправляться более одного раза.

«Проблема» в том, что невозможно назначить ID кнопкам отправки, поскольку они автоматическисгенерировано (и я явно просил не изменять это поведение).

Я пробовал этот jQuery, но он не работает:

$('#form1').submit(function () {
        $(this).children('input[type=submit]').attr('disabled', 'disabled');
    });

Где form1 - идентификатор переноса формыМастер.Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Я нашел решение.Это не изящное решение, но когда вы имеете дело с грязными элементами управления, предоставляемыми веб-формами ASP.NET, чаще всего обходные пути являются единственно возможным решением.

Первый шаг - отключение автоматической генерациикнопку завершения и затем прикрепите в нижней части мастера:

<FinishNavigationTemplate>
        <table cellpadding="3" cellspacing="3">
         <tr>
            <td>
               <asp:Button ID="btnPrevious" runat="server" Text="Previous"
                           CausesValidation="false" 
                           CommandName="MovePrevious"
                           CssClass="buttonStyle"/>
            </td>
            <td>
               <asp:Button ID="btnFinish" runat="server" Text="Finish"
                           onClientClick="this.disabled = true; this.value =  'Submitting...';  
                           this.className = 'buttonStyleDisabled';"   
                           UseSubmitBehavior="false"  
                           CausesValidation="true" 
                           CommandName="MoveComplete"
                           CssClass="buttonStyle"/>
            </td>  
          </tr>
        </table>
</FinishNavigationTemplate>

ОБНОВЛЕНИЕ:

Чтобы удалить автоматическую генерацию кнопки завершения, просто удалите <FinishCompleteButtonStyle> тег от Волшебника

0 голосов
/ 14 февраля 2012
  1. Вам не хватает # перед form1 в вашем селекторе.

  2. Вы не определили e

  3. возвращение false приведет к предотвращению дефолта, нет необходимости в обоих

Edit:

Установите атрибут CssClass на кнопке на submitbutton

$('.submitbutton').click(function(){
    $(this).prop('disabled', true);
});

Или в вашем примере я бы предположил, что что-то вроде этого будет работать

$(this).find(':submit').prop('disabled', true);
...