2016-05-01 6 views
0

テキストボックス、ラジオボタンなどのフォームがあり、ドロップダウンが特定の値に変更されたときに入力フィールドの一部に検証グループを付ける。それは可能ですか?ドロップダウンが特定の値に変更されたときに、テキストボックスに検証グループを追加します。

私はこのフォームを持っていると言うことができます。

<form> 
Name: 
     <asp:textbox runat="server" id="nametextbox" ValidationGroup="myvalgroup"/> 
     <asp:RequiredFieldValidator id="nametextboxFieldValidator" runat="server" ErrorMessage="Name?" ValidationGroup="myvalgroup" ControlToValidate="nametextbox" /> 

Gender: <asp:RadioButtonList runat="server" ID="gender" RepeatDirection="Horizontal" ValidationGroup="myvalgroup"> 
      <asp:ListItem Text="Select gender" Value="" Selected="True"/> 
      <asp:ListItem Text="Male" Value="Male"/> 
      <asp:ListItem Text="Female" Value="Female"/> 
     </asp:RadioButtonList> 
     <asp:RequiredFieldValidator id="genderFieldValidator" runat="server" ErrorMessage="Gender?" ValidationGroup="myvalgroup" ControlToValidate="gender" /> 

The answer to life the universe and everything: 
     <asp:textbox runat="server" id="theanswer" /> 

Are you finished? 
     <asp:RadioButtonList runat="server" ID="finished" RepeatDirection="Horizontal" onchange="add-validation-group()" > 
      <asp:ListItem Text="Are you done?" Value="" Selected="True"/> 
      <asp:ListItem Text="Yes" Value="Yes"/> 
      <asp:ListItem Text="No" Value="No"/> 
      <asp:ListItem Text="Absolutly not, i need 600 more years to think!" Value="NOT-IN-600-YEARS"/> 
     </asp:RadioButtonList> 

     <asp:button runat="server" id="submitbutton" /> 
</form> 

分離コード

function add-validation-group() 
    if (finished.SelectedValue.ToString() == "Yes") 
     { 
      theanswer.Attributes.Add("ValidationGroup", "myvalgroup"); 
     } 
end 

私の分離コードはすべての重複が整理が含まれていますが、ちょうど私がacomplishしたいものを表示するようにして[OK]を、codemixingのため申し訳ありません!

これを行うには、ドロップダウンリストのonchangeを入力フィールドに追加しますか?

私は正しい方向を向いてください! :)

答えて

0

最後に私は私の質問に対する解決策を見つけました。 かなり簡単に私は追加するかもしれません。

<script type=text/javascript> 
    $(document).ready(function() { 
     $("#<%= finished.ClientID %>").change(function() { 
      if ($('option:selected', this).text() == 'Yes') { 
       ValidatorEnable(document.getElementById('<%=theanswerValidator.ClientID%>'), true); 
      } 
     }); 
    }); 
</script> 

<form> 
Name: 
    <asp:textbox runat="server" id="nametextbox" ValidationGroup="myvalgroup"/> 
    <asp:RequiredFieldValidator id="nametextboxFieldValidator" runat="server" ErrorMessage="Name?" ValidationGroup="myvalgroup" ControlToValidate="nametextbox" /> 

Gender: <asp:RadioButtonList runat="server" ID="gender" RepeatDirection="Horizontal" ValidationGroup="myvalgroup"> 
     <asp:ListItem Text="Select gender" Value="" Selected="True"/> 
     <asp:ListItem Text="Male" Value="Male"/> 
     <asp:ListItem Text="Female" Value="Female"/> 
    </asp:RadioButtonList> 
    <asp:RequiredFieldValidator id="genderFieldValidator" runat="server" ErrorMessage="Gender?" ValidationGroup="myvalgroup" ControlToValidate="gender" /> 

The answer to life the universe and everything: 
    <asp:textbox runat="server" id="theanswer" /> 
    <asp:RequiredFieldValidator id="theanswerValidator" Enabled="false" runat="server" ErrorMessage="Your answer?" ValidationGroup="myvalgroup" ControlToValidate="theanswer" /> 

Are you finished? 
    <asp:DropDownList runat="server" ID="finished" > 
     <asp:ListItem Text="Are you done?" Value="" Selected="True"/> 
     <asp:ListItem Text="Yes" Value="Yes"/> 
     <asp:ListItem Text="No" Value="No"/> 
     <asp:ListItem Text="Absolutly not, i need 600 more years to think!" Value="NOT-IN-600-YEARS"/> 
    </asp:DropDownList> 

    <asp:button runat="server" id="submitbutton" /> 
</form> 

私は、ジ・アンサーテキストボックスに必要なフィールドバリデータを追加し、私は、彼らはのRequiredFieldValidatorを有効に行う場合、ユーザーは[はい]を選択してかどうかを確認するためにJavaScriptでのonchangeイベントを追跡する「偽」=有効を追加。

私の質問では、私はRadiobuttonlistを持っていましたが、他の理由で代わりにDropdownListに変更しましたが、ラジオボタンリストを持っていればこれは不可能だと思います。

OK、コードビハインドではありませんが機能します。 私はコードビハインドをやろうとしましたが、選択した変更でポストバックを持つのはユーザーフレンドリーです。私のASPで

誰かが分離コード方式でintrestedている場合、私はこのようにそれをやった、それが働いたが(私の意見ではないので、ユーザーフレンドリー)

:DropDownListの私は

OnSelectedIndexChanged="finished_SelectedIndexChanged" AutoPostBack="true" 

を追加し、私のコードビハインドで私はこれを追加しました:

protected void finished_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DropDownList ddl = (DropDownList)sender; 

    if (ddl.SelectedItem.ToString().Equals("Yes")) 
    { 
     theanswerValidator.Enabled = true; 
    } 
    else // If someone selects yes and then regret it and selects no then disable validator again 
    { 
     theanswerValidator.Enabled = false; 
    } 
} 
関連する問題