2009-11-24 4 views
1
<asp:TextBox ID="Textboxtotalamount" OnTextChanged="AmountChanged" 
     Width="90px" AutoPostBack="true" runat="server"> 
</asp:TextBox> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator" runat="server" 
     ControlToValidate="Textboxtotalamount" 
     SetFocusOnError="True" ValidationGroup="val">*</asp:RequiredFieldValidator> 
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ControlToValidate="Textboxtotalamount" 
     ValidationExpression="^[-+]?[1-9]\d{0,13}(\.\d{1,3})?%?$" 
     SetFocusOnError="True">F</asp:RegularExpressionValidator> 

dans ce code ci-dessus peut correctement valider ....... mais dans la boîte de texte que j'appelle « OnTextChanged » événement .... supposons que si je tape (caractères) dans errormesge zone de texte affichés en même temps ontextchanged événement également appelé erreur poule s'est produite .... je dois arrêter l'événement OnTextChanged lorsque regularexpression soulevé ...... pls aider+ régulier de validation nécessaire

+0

Domnic, Une fois que vous avez validateur d'expression régulière et sur le terrain validateur nécessaire, ils valident l'entrée utilisateur via JavaScript à la fin client uniquement, maintenant au cas où ils sont passés événement alors que AmountChanged sera tiré à la fin du serveur (en Si vous voulez que le montant soit modifié à la fin du client, vous devez ajouter page_ClientValidate() en Javascript). –

+0

@Beginner: Je ne suis pas d'accord: RegularExpressionValidator effectue la validation côté client * et * côté serveur. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.regularexpressionvalidator.aspx – Heinzi

+0

@Beginner - RequiredFieldValidator et RegularExpressionValidator effectuent la validation côté client et côté serveur. –

Répondre

2

J'ai mis à jour votre code. voyez si cela vous aide.

<asp:TextBox ID="Textboxtotalamount" OnTextChanged="AmountChanged" ValidationGroup="val" 
     Width="90px" AutoPostBack="true" runat="server" CausesValidation="true"> 
</asp:TextBox> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator" runat="server" ValidationGroup="val" 
     ControlToValidate="Textboxtotalamount" 
     SetFocusOnError="True" >*</asp:RequiredFieldValidator> 
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ControlToValidate="Textboxtotalamount" ValidationGroup="val" 
     ValidationExpression="^[-+]?[1-9]\d{0,13}(\.\d{1,3})?%?$" 
     SetFocusOnError="True">F</asp:RegularExpressionValidator> 
+1

+1. CausesValidation est plus élégant que 'this.Validate'. – Heinzi

+0

Merci beaucoup, cela fonctionne parfaitement – Domnic

+1

@Heinzi: oui. Mais du côté client. Encore faut-il que "this.Validate" soit aussi validé côté serveur. bonne pratique;) – Saar

2

Je ne suis pas sûr d'avoir bien compris votre question: Vous voulez exécuter le code `AmountChanged 'seulement si le validateur n'a signalé aucune erreur, n'est-ce pas? Dans ce cas, vous devez appeler

if (!this.IsValid) 
    return; 

au début de AmountChanged. (Vous pourriez besoin d'appeler this.Validate(); d'abord, si OnTextChanged ne lance pas la validation par lui-même.)

Les détails peuvent être trouvés ici: http://msdn.microsoft.com/en-us/library/dh9ad08f(VS.100).aspx


Précision: À l'heure actuelle, votre code ressemble à ceci :

void AmountChanged(...) { 
    ... 
} 

Vous devez changer à ceci:

void AmountChanged(...) { 
    if (!this.IsValid) 
     return; 

    ... 
} 

afin que le code ne soit pas exécuté lorsqu'un validateur détecte une erreur. En outre, vous devez ajouter CausesValidation="true" à votre TextBox comme le montre l'exemple de Saar.

+0

où devrais-je utiliser cela? – Domnic

+0

Au début de votre méthode 'AmountChanged'. – Heinzi

+0

comment appeler l'événement onpageload – Domnic

Questions connexes