web-dev-qa-db-fra.com

asp: validation requise de FieldValidator en fonction des conditions

J'ai la validation comme ci-dessous, mais je souhaite seulement déclencher si la case est cochée.

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

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

Puis-je le faire en utilisant asp: RequiredFieldValidator?
Je n'aime valider que si une certaine condition correspond.
Actuellement, il est en cours de validation à chaque fois que vous cliquez sur le bouton "Enregistrer".

21
ove

J'ai résolu cela facilement en ajoutant le javascript suivant côté client.

ValidatorEnable(document.getElementById("RequiredFieldValidator1"), true); or
ValidatorEnable(document.getElementById("RequiredFieldValidator2"), false);
10
ove

Utilisez plutôt un validateur personnalisé:

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

et le script (en cochant simplement une case à cocher et la valeur de la zone de texte comme exemple; vous pouvez utiliser une logique personnalisée):

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

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

Cela fera la validation côté client. Si vous avez également besoin de la validation du serveur, ajoutez l'attribut OnServerValidate et un gestionnaire de code derrière. Voir ici pour plus de détails .

37
mshsayem

Vous pouvez également essayer celui-ci

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
Dhaval Marthak

Essaye ça...

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

Vous pouvez activer/désactiver le RequiredFieldValidator à partir de Javascript/jQuery. Pour votre condition, lorsque la case à cocher est cochée: - Appelez simplement la fonction javascript pour activer le RequiredFieldValidator et lorsque sa décoche vient de désactiver le RequiredFieldValidator.

Pour d'autres conditions telles que le changement d'index Dropdown, le changement de valeur de la zone de texte et le changement de sélection de bouton radio, vous pouvez appeler respectivement onchange, onblur, onclick et Après avoir exécuté la condition requise, vous pouvez Enabled/Disabled le RequiredFieldValidator.

J'espère que cela vous aidera.

0