2017-06-08 1 views
0

ユーザー設定フォームを使用していますが、何らかの種類のユーザー設定を変更するドロップダウンリストがあります。同じページにも同じではない。チェックボックスがチェックされると、ユーザは古いものと新しいパスワードを入力する必要がどこチェックボックスで必須のフィールドバリデータを使用する方法チェックされているかどうかを確認します。

<asp:CheckBox ID="cbPassword" runat="server" CssClass="checkbox" onclick="showhidepasswordFields()" /> 

<div class="col-xs-9 form-inline" id="PChange" style="display: none;"> 
    <asp:TextBox ID="tbxOldPass" runat="server" TextMode="Password" CssClass="form-control" Width="122px"></asp:TextBox> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Enter Old Password" ForeColor="Red" ControlToValidate="tbxOldPass" ValidationGroup="grp"></asp:RequiredFieldValidator> 
    <asp:TextBox ID="tbxNewPass" runat="server" TextMode="Password" Width="122px" CssClass="form-control"></asp:TextBox> 
    <asp:RequiredFieldValidator ID="tbxNewPassRFV" runat="server" ControlToValidate="tbxNewPass" ErrorMessage="Enter New Passwod" ForeColor="Red" ValidationGroup="grp"></asp:RequiredFieldValidator> 
    <asp:TextBox ID="tbxConfirmPass" runat="server" TextMode="Password" Width="122px" CssClass="form-control" ></asp:TextBox> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" Display="Dynamic" ControlToValidate="tbxConfirmPass" ErrorMessage="Reconfirm Password" ForeColor="Red" ValidationGroup="grp" ></asp:RequiredFieldValidator> 
    <asp:CompareValidator ID="CompareValidator1" runat="server" Display="Dynamic" ErrorMessage="Paswords are not Same" ForeColor="Red" ControlToCompare="tbxNewPass" ControlToValidate="tbxConfirmPass" ValidationGroup="grp"></asp:CompareValidator> 
</div> 

が見えるなります。チェックボックスをオンにすると、必要なフィールドバリデーターがうまく動作しません。

<asp:Button ID="tbnUpdate" runat="server" Text="Update" OnClick="tbnUpdate_Click" CssClass="btn btn-success" CausesValidation="false" ValidationGroup="grp" /> 

CausesValidation="false"を設定すると、検証は行われません。私がそれをtrueに設定すると、チェックボックスがチェックされていなければ、バリデータがトリガされます。チェックボックスがチェックされているときにのみvaldationが実行される方法はありますか?他の方法でドロップダウンリストから設定を更新しますか?

divを表示/非表示にするJavaスクリプト機能。

<script type="text/javascript"> 
     function showhidepasswordFields() { 
      if (document.getElementById('<%=cbPassword.ClientID%>').checked) { 
       document.getElementById('PChange').style.display = 'block'; 
      } 
      else if (!document.getElementById('<%=cbPassword.ClientID%>').checked) { 
       document.getElementById('PChange').style.display = 'none'; 
      } 
     } 
    </script> 
+0

関連するすべてのコードを示してください。あなたが共有したコードにはチェックボックスが表示されません。しかし、あなたはこのようなもののためにカスタムバリデーターを書く必要があると思います。 –

+0

私はコードを追加しました。 – Mysterious

答えて

0

.aspxの:

<asp:CheckBox ID="cbTest" runat="server" OnCheckedChanged="cbTest_CheckedChanged"></asp:CheckBox> 
<asp:TextBox ID="txtTest" runat="server"></asp:TextBox> 
<asp:RequiredFieldValidator ID="reqFV" Enabled="false" runat="server" ErrorMessage="*****" ControlToValidate="txtTest" ></asp:RequiredFieldValidator> 

.aspx.cs:

protected void cbTest_CheckedChanged(object sender, EventArgs e) 
{ 
    reqFV.Enabled = cbTest.Checked; 
} 
0

あなたはそのためのCustomValidatorを使用することができます。最初の機能はCheckBoxがチェックされているかどうかをテストするだけです。もう1つは、TextBoxにも値があるかどうかを確認するなど、より多くのロジックを追加します。テストのためにClientValidationFunctionを変更するだけです。

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:CheckBox ID="CheckBox1" runat="server" /> 
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" ClientValidationFunction="testCheckBoxAndTextBox"></asp:CustomValidator> 

<script type="text/javascript"> 
    function testCheckBox(sender, element) { 
     element.IsValid = $("#<%= CheckBox1.ClientID %>").prop('checked'); 
    } 

    function testCheckBoxAndTextBox(sender, element) { 
     var isValid = false; 
     if ($("#<%= CheckBox1.ClientID %>").prop('checked') == true && $("#<%= TextBox1.ClientID %>").val() != "") { 
      isValid = true; 
     } 
     element.IsValid = isValid; 
    } 
</script> 
関連する問題