2010-04-22 11 views
6

ja stworzyliśmy tekstowe i CompareValidator poniżej której myślałem pozwoli wejście w następujących formach:Najlepszy sposób sprawdzania poprawności wprowadzania waluty?

  • 5,00
  • $ 5,00

Niestety to nie pozwalając wersji z znak dolara w nim. Jaki jest sens sprawdzania typu w stosunku do waluty, jeśli nie zgadzasz się na znak dolara? Czy istnieje sposób na dopuszczenie tego symbolu?

  <asp:TextBox ID="tb_CostShare" runat="server" Text='<%# Eval("CostShare", "{0:$0.00}")%>' CausesValidation="true" /> 
      <asp:CompareValidator ID="vld_CostShare" 
            runat="server" 
            ControlToValidate="tb_CostShare" 
            Operator="DataTypeCheck" 
            Type="Currency" 
            ValidationGroup="vld" 
            ErrorMessage="You must enter a dollar amount for 'Cost Share'." />  
+0

Co jeśli używasz '{0: c}' zamiast? – Greg

+3

Walidacja waluty może obejmować waluty inne niż USD ... –

+0

@Austin - Nie chcę zatwierdzać niczego innego niż USD. @Greg - jak mogę użyć {0: c} do sprawdzenia poprawności? –

Odpowiedz

8

CompareValidator nie obsługuje symboli walut. Możesz wstępnie wstawić kontrolkę wejściową za pomocą $ lub użyć walidatora wyrażenia regularnego, na przykład strona this.

Poniższy wzór będzie pasował swoje przykłady (dzięki uprzejmości http://www.regexlib.com):

^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$ 
1

Ponadto, można napisać własny walidator do analizowania ciąg, z lub bez $. Ale musisz napisać trochę kodu JavaScript, aby uzyskać walidację po stronie klienta.

Powiązane problemy