0

我有一个使用向导模板控件的 ASP.NET Web 窗体应用程序。

在我的向导中有四个页面(表单),我想使用jQuery来禁用最后一页上的提交按钮(其他页面上的按钮只是下一个和上一个)我想这样做是为了防止用户在按钮上单击更多次,导致表单被多次提交。

“问题”是无法将ID分配给提交按钮,因为它们是自动生成的(我已明确要求不要修改此行为)。

我试过这个 jQuery 但它不起作用:

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

form1包装向导的表单的 ID 在哪里。有人可以帮忙吗?

4

2 回答 2

0

我找到了解决方案。它不是一个整洁的方法,但是当您处理 ASP.NET Web 窗体提供的凌乱控件时,大多数时候变通办法是唯一可能的解决方案。

第一步是禁用完成按钮的自动生成,然后在向导底部附加:

<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>从向导中删除标签

于 2012-02-15T12:34:40.100 回答
0
  1. 您在选择器中缺少 # before form1

  2. 你还没有定义e

  3. return false 将做一个 preventDefault,不需要两者

编辑:

将按钮上的 CssClass 属性设置为submitbutton

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

或者在你的例子中,我想这样的事情会起作用

$(this).find(':submit').prop('disabled', true);
于 2012-02-14T12:25:58.867 回答