2013-05-28 22 views
16

以下のような検証がありますが、チェックボックスがオンになっている場合にのみトリガされます。asp:条件に基づいたRequiredFieldValidatorの検証

<!-- TextBox and its validator --> 
Name: <asp:TextBox ID="TextBox1" runat="server" /> 

<asp:RequiredFieldValidator runat="server" 
     ID="RequiredFieldValidator1" 
     Text="*" 
     ErrorMessage="Name is required" 
     ControlToValidate="TextBox1" /> 

asp:RequiredFieldValidatorを使用してこれを行うことはできますか?
特定の条件が一致するかどうかだけを検証するのが好きです。
現在、[保存]ボタンをクリックするたびに検証されます。

+1

代わりに 'CustomValidator'を使用してください。 – mshsayem

+0

どのような例ですか?バリデーターは、複数のコントロールと条件に基づいた相互作用が必要です。 – ove

答えて

7

クライアント側で次のjavascriptを追加することで簡単に解決できました。

ValidatorEnable(document.getElementById("RequiredFieldValidator1"), true); or 
ValidatorEnable(document.getElementById("RequiredFieldValidator2"), false); 
+0

素晴らしい!ハッキングのようなものですが、とても巧妙です。 – Jaider

+4

Page.IsValidはこの場合falseです。 –

28

代わりにカスタムバリデータを使用します。

<asp:CustomValidator ID="cv1" runat="server" 
     ErrorMessage="Name is required" 
     Text="*" 
     ControlToValidate="TextBox1" 
     ValidateEmptyText="True" 
     ClientValidationFunction="validate" /> 

とスクリプトを(単なる一例として、チェックボックスとテキストボックスの値をチェックし、カスタム・ロジックを使用することができます):

<script type="text/javascript"> 
    function validate(s,args){ 
     if(document.getElementById("<%= checkboxId.ClientID %>").checked){ 
      args.IsValid = args.Value != ''; 

     } 
     else{ 
      args.IsValid = true; 
     } 
    } 
</script> 

これがどうなりますクライアント側の検証。サーバーの検証も必要な場合は、OnServerValidate属性とコードの後ろにハンドラを追加します。 See here for details

+9

注:空のテキストボックスでなぜそれが発生しないのか疑問がある場合は、CustomValidatorで 'ValidateEmptyText =" True "を設定する必要があります。 – arnaudoff

0

また、この1

protected void CheckBox_CheckedChanged(object sender, EventArgs e) 
{ 

    if(CheckBox.Checked) 
    { 
     RequiredFieldValidator1.Enabled = true; 
     RequiredFieldValidator1.ValidationGroup = "anything"; 
     Button1.ValidationGroup = "anything";// your save button 

    } 
    else 
    { 
     RequiredFieldValidator1.Enabled = false; 
     RequiredFieldValidator1.ValidationGroup = string.Empty; 
     Button1.ValidationGroup = string.Empty; // save button 
    } 
} 
+0

私のコードはありませんが、私たちはクライアントの検証を行っているので、コードの背後にあるコードはヒットしないので、これはうまくいくとは思わないでしょうか? – ove

+0

下記の私のコメントと同じです。 in_visibleが何を言っているかを確認しました。これは、バリデータが起動するまで機能します。起動すると、それを満足しない限りバリデータを無効にするポストバックはできません。 –

0

あなたは/無効Javascriptを/ jQueryのからのRequiredFieldValidatorを有効にすることができます

protected void RequiredFieldValidator1_Load(object sender, EventArgs e) 
{ 
    if (CheckBox1.Checked == true) 
    { 
     RequiredFieldValidator1.Enabled = true; 
    } 
    else if (CheckBox1.Checked == false) 
    { 
     RequiredFieldValidator1.Enabled = false; 
    } 
} 
+1

他の回答の回答に似ています。 "私のコードはありませんが、私たちはクライアントの検証をしており、コードの背後にあるコードがヒットしないので、これはうまくいかないと思いますか?" – ove

+0

これは、バリデータが起動するまで機能します。起動すると、それを満足しない限りバリデータを無効にするポストバックはできません。 –

0

...これを試してみてください試すことができます。 チェックボックスがチェックされている場合: - javacript関数を呼び出してRequiredFieldValidatorを有効にし、そのチェックを外しただけでRequiredFieldValidatorが無効になった場合。ドロップダウン屈折率変化、テキストボックスの値を変更し、必要な条件を実行した後にそののonchange、のonblur、onclickのそれぞれと を呼び出すことができますラジオボタンの選択の変更などのその他の条件については

あなたは/のRequiredFieldValidator無効有効ことができます。

ご希望の場合はこちらをご覧ください。

関連する問題