2010-04-22 17 views
6

yo he creado al cuadro de texto y CompareValidator por debajo del cual pensé que permitiría la entrada de las siguientes formas:¿La mejor manera de validar la entrada de moneda?

  • 5,00
  • $ 5,00

Por desgracia, no está permitiendo que la versión con el signo de dólar en él. ¿Cuál es el punto de hacer una verificación de tipo contra la moneda si no permite el signo de dólar? ¿Hay alguna manera de permitir este símbolo?

  <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

¿Qué sucede si utiliza '{0: c}' en su lugar? – Greg

+3

Una validación de moneda podría incluir monedas distintas de USD ... –

+0

@Austin - No quiero validar nada que no sea USD. @Greg - ¿Cómo usaría {0: c} para validar? –

Respuesta

8

El CompareValidator no admite símbolos de moneda. Puede prefijar su control de entrada con $ o usar un validador de expresión regular, la página this tiene un ejemplo.

El siguiente patrón coincidirá con sus ejemplos (cortesía de http://www.regexlib.com):

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

También, usted podría escribir un validador personalizado para analizar la cadena, con o sin $. Pero necesitaría escribir algo de Javascript para obtener cualquier validación del lado del cliente.

Cuestiones relacionadas