ASP.NET表单验证过早触发

时间:2014-05-07 02:59:44

标签: c# asp.net validation

我有一个两步表单,我在字段上设置验证。 前两个字段(名字/姓氏)的验证按预期工作。 但是最后两个字段(用户/密码)很快就会得到验证。 我希望用户/密码字段仅在"提交按钮"上进行验证。点击... 这是一个工作示例和我的代码。 www.smithy.somee.com

<script language="javascript" type="text/javascript">
$(document).ready(function () {            
if (Page_ClientValidate("personalGroup")) {
    $('#form-part-1').hide();
    $('#form-part-2').fadeIn();
}            
if (Page_ClientValidate("accountGroup")) {                    
    $('#form-part-2').hide();
}
});
</script>

<form id="signup" runat="server">
<div>

    <table id="validators">
        <tr>               
            <td>
                <asp:ValidationSummary ID="personalGroupSummary" runat="server" ValidationGroup="personalGroup" />
                <asp:ValidationSummary ID="accountGroupSummary" runat="server"  ValidationGroup="accountGroup" />
            </td>
        </tr>
    </table>

    <table id="form-part-1">
        <tr>
            <td>First Name:</td>
            <td><asp:TextBox ID="txtFname" runat="server"></asp:TextBox></td>
        </tr>
        <tr>
            <td>Last Name:</td>
            <td><asp:TextBox ID="txtLname" runat="server"></asp:TextBox></td>
        </tr>
        <tr>
            <td></td>
            <td>                       
                <asp:Button ID="continue" runat="server" causesvalidation="true" validationgroup="personalGroup"  Text="Continue"  />
            </td>
        </tr>
    </table>


    <table id="form-part-2">
        <tr>
            <td>Username:</td>
            <td><asp:TextBox ID="txtUser" runat="server"></asp:TextBox></td>
        </tr>
        <tr>
            <td>Password:</td>
            <td><asp:TextBox ID="txtPass" runat="server"></asp:TextBox></td>
        </tr>
        <tr>
            <td></td>
            <td>                                      
                <asp:Button ID="btnSubmit" runat="server" validationgroup="accountGroup" Text="Submit" OnClick="btnSubmit_Click" />
            </td>
        </tr>
    </table>

    <!-- output -->
    <table>
        <tr>
            <td>First: </td>
            <td><asp:Label ID="lblFname" runat="server" Text=""></asp:Label></td>
        </tr>
        <tr>
            <td>Last:</td>
            <td><asp:Label ID="lblLname" runat="server" Text=""></asp:Label></td>
        </tr>
        <tr>
            <td>User:</td>
            <td><asp:Label ID="lblUser" runat="server" Text=""></asp:Label></td>
        </tr>
        <tr>
            <td>Pass:</td>
            <td><asp:Label ID="lblPass" runat="server" Text=""></asp:Label></td>
        </tr>
    </table>
</div>

    <!-- validators -->

        <asp:requiredfieldvalidator id="fvFname" runat="server" validationgroup="personalGroup" Display="None" ControlToValidate="txtFname" ErrorMessage='"First Name" is required'></asp:requiredfieldvalidator>
        <asp:requiredfieldvalidator id="fvLname" runat="server" validationgroup="personalGroup"  Display="None" ControlToValidate="txtLname" ErrorMessage='"Last Name" is required'></asp:requiredfieldvalidator>
        <asp:requiredfieldvalidator id="fvUser" runat="server" validationgroup="accountGroup" Display="None" ControlToValidate="txtUser" ErrorMessage='"Username" is required'></asp:requiredfieldvalidator>
        <asp:requiredfieldvalidator id="fvPass" runat="server" validationgroup="accountGroup" Display="None" ControlToValidate="txtPass" ErrorMessage='"Password" is required'></asp:requiredfieldvalidator>

    <!-- validators -->
</form>

2 个答案:

答案 0 :(得分:0)

尝试将EnableClientScript="False"添加到验证器

 <asp:requiredfieldvalidator id="fvFname" runat="server" 
                             EnableClientScript="False"
                             validationgroup="personalGroup" Display="None"
                             ControlToValidate="txtFname" 
                             ErrorMessage='"First Name" is required'>
</asp:requiredfieldvalidator>

答案 1 :(得分:0)

事实证明,Panel控件是我的问题的答案。我在这个网站上找到了解决方案。 (Doug Seven的赞美)。建造它并经过测试和工作就像一个魅力。

http://devproconnections.com/database-development/create-multistep-forms