2012-02-14 73 views
0

我有一個ASP.NET Web窗體應用程序,它使用嚮導模板控件禁用ASP.NET嚮導模板中的jQuery提交按鈕

在我的嚮導,有四頁(形式),我想用jQuery的以禁用提交最後一頁按鈕(按鈕上的其他網頁都只是下一個和以前)我想要這樣做是爲了防止用戶點擊按鈕上的更多時間,導致表單被提交多次。

「問題」是因爲它們是自動生成的(我明確要求不要修改此行爲),因此不可能將ID分配給提交按鈕。

我嘗試這樣做的jQuery,但它不工作:

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

哪裏form1的形式包裝嚮導的ID。任何人都可以幫忙?

回答

0
  1. 您在選擇器中缺少form1之前的#號。

  2. 您還沒有定義e

  3. 返回false將做的preventDefault,不需要兩個

編輯:

設置按鈕上的CssClass屬性到submitbutton

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

或者在你的例子中,我會想這樣的事情會工作

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

謝謝。查看代碼的更新。它不會像這樣工作 – CiccioMiami 2012-02-14 12:29:12

+0

@CiccioMiami爲什麼不在按鈕上的點擊事件中處理它?病例更新 – Johan 2012-02-14 12:40:19

+0

謝謝,我也嘗試過這個解決方案,但它不工作... – CiccioMiami 2012-02-14 12:46:56

0

我找到了解決方案。它不是一個整潔的,但是當你處理由ASP.NET Web Forms提供的混亂控件時,大多數時間解決方法是唯一可能的解決方案。

的第一步是禁用結束按鈕的自動生成,然後在嚮導的底部附接:

<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> 

UPDATE:

爲了除去自動生成的完成按鈕只需從嚮導中刪除<FinishCompleteButtonStyle>標記