2012-02-14 74 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>标记