2010-08-31 48 views

回答

7

而不是使用Type="Double",请尝试使用Type="Currency"。它应该接受带有和不带逗号的值,但不会接受超过2个小数位。

下面是一个例子:

<asp:TextBox runat="server" ID="TextBox1" /> 
<asp:CompareValidator runat="server" ID="cValidator" ControlToValidate="TextBox1" 
    Type="Currency" Operator="DataTypeCheck" EnableClientScript="true" 
    ErrorMessage="Invalid format!" Display="Dynamic" /> 

否则一个RegularExpressionValidator将工作,加上一个RequiredFieldValidator校验空条目(正则表达式验证程序不阻止空条目)。你可以使用CustomValidator,但是如果你不想仅凭服务器端验证回发,你需要在JavaScript中提供一个客户端验证例程。此外,客户端解决方案可能涉及正则表达式,它更多的工作来验证整体,尽管不是太复杂。

这是一个例子使用RegularExpressionValidator

<asp:TextBox runat="server" ID="TextBox1" /> 
<asp:RequiredFieldValidator runat="server" ID="rfValidator" Display="Dynamic" 
    ControlToValidate="TextBox1" ErrorMessage="Required!" /> 
<asp:RegularExpressionValidator ID="reValidator" runat="server" 
     ControlToValidate="TextBox1" 
     EnableClientScript="True" 
     ErrorMessage="Invalid Format!" 
     Display="Dynamic" 
     ValidationExpression="(\d{1,3}(,\d{3})*\.\d{2})|(\d+(\.\d{2})?)" /> 
+1

货币完全为我工作!我只是希望货币足够聪明来处理美元符号。 – John 2011-11-29 15:24:30

相关问题