2009-04-22 4 views
2

In asp.net muss ich einen Validator zu einem Textfeld hinzufügen, das die Eingabe zu Zahlen gezwungen wird.In asp.net muss ich Validator Textbox hinzufügen, die die Eingabe zu Zahlen zwingt

Ist das eingebaut?

Ich habe der Textbox bereits einen erforderlichen Feldvalidierer hinzugefügt.

+2

Zahlen oder Ziffern? Da ist ein Unterschied. –

+0

Joel, was ist der Unterschied? – Blankman

+2

@Blankman vermutlich er bedeutet den Unterschied zwischen "Ziffern", die 10 Zeichen repräsentieren 0-9 und "Zahlen", bestehend aus Ziffern, Komma, Dezimalstellen, Basis-IDs usw. –

Antwort

4
<asp:RegularExpressionValidator runat="server" 
      ControlToValidate="numbersOnlyTextBox" 
      ErrorMessage="Enter only numeric characters." 
      ValidationExpression="^\\d+$" /> 
+2

ValidationExpression = "^ \\ d * $" – Tracker1

+0

Danke, es sollte eigentlich + anstelle von * sein, da es eine Voraussetzung dafür gibt nicht leer sein. –

+1

@ChrisBallance Der RegularExpressionValidator aktiviert leeren Imput, so dass es keinen Unterschied zwischen * und + gibt (leider) – Michiel

7

Sie könnten einen Regex Validator verwenden Sie den Text, um sicherzustellen, ist numerisch

ich denke, die regex

[0-9]* 

wäre z.B.

<asp:TextBox ID="tbxNumbers" runat="server" /> 
<asp:RegularExpressionValidator ID="revNumericValidator" runat="server" 
       ValidationExpression="^[0-9]*$" ControlToValidate="tbxNumbers" ErrorMessage="Must be Numeric" /> 

EDIT: Wie die beiden anderen Plakaten auch Sie auch \d verwenden wies darauf hin, kann einem numerischen Zeichen

+3

\ d + könnte besser sein – Keltex

+1

Beachten Sie, dass + anstelle von * macht den erforderlichen Feldvalidierer überflüssig. –

+0

Ich mag Regex, aber denke, dass es in diesem Fall übertrieben ist; Ein Bereichsüberprüfer wäre "effizienter", da Sie abhängig vom Typ-Attribut, das Sie verwenden, problemlos Dezimalzahlen usw. zulassen können. – Cyberherbalist

2

Verwenden Sie einen Bereich Validator darzustellen.

<asp:TextBox ID="MyTextBox" MaxLength="4" Width="75" 
    Text="0" runat="server"></asp:TextBox> 
<asp:RangeValidator ID="MyRangeValidator" Display="Static" Type="Integer" 
    MaximumValue="9999" MinimumValue="0" EnableClientScript="true" 
    ControlToValidate="MyTextBox" runat="server" SetFocusOnError="true" 
    ErrorMessage="Ooops"></asp:RangeValidator> 

Dies ermöglicht Ihnen, Zahlen zu verwenden mit Dezimalstellen (unter Verwendung von Type = „Double“ oder „Währung“) oder andere Arten von Zahlen, die Windows erkennt.

Überprüfen Sie MSDN für weitere Informationen über die Range Validator Control.

0

Ich denke, dass hier die Anforderungen genauer geklärt werden müssen. Über welche Art von Zahlen reden wir? Positive ganze Zahlen? Eine ganze Zahl? Eine Zahl mit einer Dezimalstelle? Was ist mit Kommas in der Zahl (1.000)?

Ich empfehle einen RegularExpressionValidator, um Ihre Arbeit zu erledigen, aber diese Fragen machen einen Unterschied, wenn es darum geht, welche RegEx Sie verwenden.

0

Um eine bessere Benutzererfahrung zu bieten, ist ein AjaxToolkit FilteredTextBox Extender mit einem FilterType von "Custom, Numbers" oder nur "Numbers" hinzuzufügen. Die erste Wahl ist, wenn Sie Dezimalpunkte und negative Zahlen angeben können. In diesem Fall müssen Sie auch das ValidChars-Attribut mit etwa "-." Angeben. Dadurch wird verhindert, dass ein Benutzer Zeichen eingibt, die keine gültige Zahl wie -123.45 bilden. Beachten Sie, dass es den Benutzer nicht daran hindert, '-' & 'einzugeben.' an falschen Stellen, z.B. "2 -..- 3" kann noch eingegeben werden. Sie benötigen die in anderen Antworten genannten Validierer, um diese Fälle zu erfassen.

<ajaxToolkit:FilteredTextBoxExtender ID="ftbe" runat="server" 
    TargetControlID="numbersOnlyTextBox"   
    FilterType="Custom, Numbers" 
    ValidChars="-." /> 

Oder

<ajaxToolkit:FilteredTextBoxExtender ID="ftbe" runat="server" 
    TargetControlID="numbersOnlyTextBox"   
    FilterType="Numbers" /> 
Verwandte Themen