2010-08-31 47 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

相關問題