2009-04-16 5 views
0

J'ai 2 contrôles de zone de texte où les valeurs de date seront saisies. Je le veux pour que si une date est entrée dans l'une des zones de texte alors l'autre devient nécessaire.Validation TextBox ASP.Net

Ceci est probablement une vraie question noobie mais toute aide serait grandement appréciée.

Merci d'avance.

Modifier: Juste pour clarifier un peu mieux. J'utilise un validateur de comparaison pour vérifier si la valeur entrée dans les zones de texte sont des dates, donc ce n'est pas un problème. Le problème est que je veux une validation de sorte que si une valeur est entrée dans une zone de texte alors l'autre devient nécessaire. Sinon, si les deux zones de texte sont vides, aucune n'est requise.

+0

l'autre nécessite une date ou nécessite simplement d'avoir un type d'entrée? – TStamper

Répondre

2

Eh bien, vous pourriez faire l'une de deux choses. Tout d'abord, comme le dit le danois, utilisez la propriété textchanged de textbox1 pour définir la propriété Enabled de validator2 sur true ou false en conséquence. Assurez-vous que vous avez défini la propriété autopostback de textbox1 sur true. Cela semblerait encore mieux si vous l'avez enveloppé dans un panneau de mise à jour afin que l'utilisateur n'ait pas à voir l'autopostback.

L'autre option consiste à utiliser un contrôle de validation personnalisé dans lequel vous écrivez la logique de validation dans l'événement ServerValidate(). Ensuite, vous pouvez vérifier si le texte entré dans textbox1 est une date, puis valider textbox2 en conséquence.

+0

Vous pouvez également spécifier la fonction ClientValidationFunction afin qu'elle valide à la fois côté client et côté serveur. –

+0

Merci c'est ce que j'étais après. –

0

Conserver un valideur de champ obligatoire désactivé pour la zone de texte 2. Activez-le dans l'événement textchanged de textbox1. Assurez-vous de vérifier la longueur du texte dans textbox1 dans l'événement car l'événement TextChanged se déclenchera même si l'utilisateur supprime le texte entré dans textbox1.

1

Si vous utilisez les contrôles de validation intégrés, vous pouvez simplement activer/désactiver un pour txtDate2 dans la méthode Page_Load sur la base de la valeur txtDate1.

protected void Page_Load(object sender, EventArgs e) 
{ 
    dateValidator2.Enabled != String.IsNullOrEmpty(txtDate.Text); 
} 

Dans votre fichier aspx;

<asp:RequiredFieldValidator ID="dateValidator2" Enabled="false" runat="server" ErrorMessage="Some message"></asp:RequiredFieldValidator> 
0

Si vous voulez la meilleure expérience utilisateur, cette validation doit être effectuée côté client.

Le contrôle RequiredFieldValidator produit réellement du code javascript pour effectuer la validation du côté client, mais il ne possède pas la fonctionnalité «both or none» que vous recherchez. Donc, la meilleure solution serait d'écrire vous-même le javascript. Il y a un certain nombre de cadres qui facilitent cela. Je suggère jQuery.

Questions connexes