2014-05-06 5 views
1

Я совершенно не знаком с C#, и я пытаюсь выяснить форму проверки. В частности, у меня есть веб-форма (C#), которую я разделил на части «form-part-1» и «form-part-2».asp: LinkButton - подтвердить поле формы

По умолчанию «форма-часть-2» скрыта. После того, как все поля в «form-part-1» будут завершены, вы сможете перейти к «form-part-2», нажав кнопку «Продолжить» linkButton.

Часть jQuery хорошо работает, показывая и скрывая формы по желанию. Но валидация больше не применяется.

У меня есть валидаторы, но на этом этапе я могу перейти к «form-part-2» без заполнения полей «form-part-1».

Я хотел бы, чтобы валидация была приведена в действие, прежде чем переходить к «форме-части-2».

Любые советы и предложения, как это сделать, будут очень признательны.

Заранее спасибо.

Вот мой код:

<script language="javascript" type="text/javascript"> 

    $(document).ready(function() { 

      $("#continue").click(function (event) { 
       $('#form-part-1').hide(); 
       $('#form-part-2').fadeIn(); 
      }); 

    }); 

</script> 

<form id="SignUp" method="post" runat="server"> 

<table id="validation"> 
    <tr> 
     <td colspan="2" vAlign="top"> 
     <asp:ValidationSummary ID="vsSignupValidation" runat="server"></asp:ValidationSummary></td> 
    </tr> 
</table> 

<table id="form-part-2"> 
<tr> 
    <td width="150"> 
      <label class=""> 
      <asp:label id="lblSignupFirstName" Runat="server">First Name:</asp:label> 
      <span style="color:red">*</span> 
      </label> 
    </td> 
    <td> 
     <asp:TextBox size="30" CssClass="input" ID="txtSignupFirstName" TabIndex="1" runat="server"></asp:TextBox> 
    </td> 
</tr> 
<tr> 
    <td width="150"> 
      <label class=""> 
      <asp:label id="lblSignupLastName" Runat="server">Last Name:</asp:label> 
      <span style="color:red">*</span> 
      </label> 
    </td> 
    <td> 
     <asp:TextBox size="30" CssClass="input" ID="txtSignupLastName" TabIndex="1" runat="server"></asp:TextBox> 
    </td> 
</tr> 
</table> 

<!-- validate and continue --> 
    <asp:LinkButton ID="continue" runat="server" onclientclick="return false;">Continue</asp:LinkButton> 
<!-- validate and continue --> 

<table id="form-part-1"> 
<tr> 
    <td width="150"> 
      <label class=""> 
      <asp:label id="lblSignupUserID" Runat="server">UserID:</asp:label> 
      <span style="color:red">*</span> 
      </label> 
    </td> 
    <td> 
     <asp:TextBox size="30" CssClass="input" ID="txtSignupUserID" TabIndex="1" runat="server"></asp:TextBox> 
    </td> 
</tr> 
<tr> 
    <td width="150"> 
     <label class=""> 
      <asp:label id="lblSignupPassword" Runat="server">Last Name:</asp:label> 
      <span style="color:red">*</span> 
     </label> 
    </td> 
    <td> 
     <asp:TextBox size="30" CssClass="input" ID="txtSignupPassword" TabIndex="1" runat="server"></asp:TextBox> 
    </td> 
</tr> 
<tr> 
    <td width="150"> 
     <label class=""> 
      <asp:Label class="formtxtsm" ID="lblSignupConfirmPassword" runat="server">Confirm password</asp:Label> 
      <span style="color:red">*</span> 
     </label></td> 
    <td> 
     <asp:TextBox size="30" ID="txtSignupConfirmPassword" TabIndex="10" runat="server" TextMode="Password" CssClass="input"></asp:TextBox> 
    </td> 
</tr> 
</table> 

<!-- validators --> 
<asp:requiredfieldvalidator id="rfvSignupFirstName" runat="server" Display="None" ControlToValidate="txtSignupFirstName" class="formerrortxt" ErrorMessage='"First Name" is required'></asp:requiredfieldvalidator> 
<asp:requiredfieldvalidator id="rfvSignupLastName" runat="server" Display="None" ControlToValidate="txtSignupLastName" class="formerrortxt" ErrorMessage='"Last Name" is required'></asp:requiredfieldvalidator> 
<asp:RequiredFieldValidator ID="rfvSignupUserID" runat="server" Display="None" ControlToValidate="txtSignupUserID" ErrorMessage='"Username" is required.'></asp:RequiredFieldValidator> 
<asp:requiredfieldvalidator id="rfvSignupPassword" runat="server" Display="None" ControlToValidate="txtSignupPassword" ErrorMessage='"Password" is required.'></asp:requiredfieldvalidator> 
<asp:requiredfieldvalidator id="rfvSignupConfirmPassword" runat="server" Display="None" ControlToValidate="txtSignupConfirmPassword" ErrorMessage='"Confirm password" is required.'></asp:requiredfieldvalidator> 
<asp:customvalidator id="cvSignupPasswordMatch" runat="server" Display="None" ErrorMessage='"Password" and "Confirm password" must match exactly.'></asp:customvalidator> 
</form> 

**** EDIT:

Благодаря Phx & Daniel для обратной связи. Очень полезно! У меня есть вещи, работающие с одним исключением. Поля «form-part-2» проверяются до того, как я даже доберусь до шага 2. Любые советы по проверке полей имени пользователя и пароля только после того, как я доберусь до «формы-части-2»? Заранее спасибо!

вот моя самая последняя версия: 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> 
+0

его уже давно, так как я в последний раз использовал форму проверки с asp.net, но это, вероятно, что-то делать с проверки на стороне клиента, валидатор было что-то вроде 'dynamic' или что-то, что используется чтобы убедиться, что он проверяет клиентскую сторону, потому что, поскольку вы используете jQuery, очевидно, что вы используете навигацию для клиентов, и, таким образом, asp.net не знает, чтобы подтвердить, пока форма не отправлена. –

ответ

1

Как Вы писали: Я хотел бы проверка, чтобы быть приведено в исполнение, прежде чем перейти к " форма-часть-2 ".

Вам необходимо создать группы проверок, чтобы проверить первые N полей и другие N полей. Так создать Validation группы для управления:

http://msdn.microsoft.com/en-us/library/vstudio/ms227424(v=vs.100).aspx

<asp:textbox id="AgeTextBox" 
     runat="Server"> 
    </asp:textbox> 

<asp:requiredfieldvalidator id="RequiredFieldValidator2" 
     controltovalidate="AgeTextBox" 
     validationgroup="PersonalInfoGroup" 
     errormessage="Enter your age." 
     runat="Server"> 
    </asp:requiredfieldvalidator> 

<!--When Button1 is clicked, only validation 
    controls that are a part of PersonalInfoGroup 
    are validated.--> 
    <asp:button id="Button1" 
     text="Validate" 
     causesvalidation="true" 
     validationgroup="PersonalInfoGroup" 
     runat="Server" /> 



<asp:textbox id="CityTextBox" 
     runat="Server"> 
    </asp:textbox> 


    <asp:requiredfieldvalidator id="RequiredFieldValidator3" 
     controltovalidate="CityTextBox" 
     validationgroup="LocationInfoGroup" 
     errormessage="Enter a city name." 
     runat="Server"> 
    </asp:requiredfieldvalidator> 



    <!--When Button2 is clicked, only validation 
    controls that are a part of LocationInfoGroup 
    are validated.--> 
    <asp:button id="Button2" 
     text="Validate" 
     causesvalidation="true" 
     validationgroup="LocationInfoGroup" 
     runat="Server" /> 

Затем используйте Diferent резюме проверки для каждой группы.

Возможно, вам нужна кнопка для каждой проверки, но вы можете сделать трюк и использовать ту же кнопку для нескольких групп проверки:

http://www.aspsnippets.com/Articles/Validate-Multiple-Validation-Groups-with-one-Button-in-ASPNet.aspx

Другой пример здесь http://www.codeproject.com/Tips/401611/Validate-multiple-Validation-group-both-client-and

+0

Этот ответ был бы намного лучше, если бы вы включили часть кода из своей первой ссылки. Например, метод validatePage, который абсолютно необходим. –

+0

Отредактировано. Спасибо за ваш совет!! –

+0

Большое спасибо за руководство. Любая идея, как получить проверку полей пользователя и пароля, запускается только в форме «form-part-2» формы? Спасибо! – user3437783

1

Phx дает частичный ответ. Используйте его предложение для создания ValidationGroups. Поместите все ваши валидаторы в части 1 и часть 2 в отдельные группы.

JQuery автоматически не запускает проверку.

Необходимо выполнить проверку вручную с помощью JavaScript. Это можно сделать, вызвав Page_ClientValidate, который будет проверять все валидаторы для прошедшей ValidationGroup.

Например:

$("#continue").click(function (event) { 
    if (Page_ClientValidate("group1")) { 
     $('#form-part-1').hide(); 
     $('#form-part-2').fadeIn(); 
    } 
}); 
Смежные вопросы