ASP 文本框支持带有 . (点)
ASP TextBox support for decimal numbers with a . (dot)
我有一个 ASP 页面,该页面中有一个文本框。此 TextBox 的类型为 Double,后端代码中的类型为 Decimal。
这是文本框。
<asp:TableCell>
<asp:TextBox ID="txtPremium" runat="server" Width="90px"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPremium" runat="server" ControlToValidate="txtPremium"
ErrorMessage="Required" ForeColor="Red" Display="Dynamic" ValidationGroup="Insert"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="txtPremium_Integer" runat="server" ValidationGroup="Insert"
ControlToValidate="txtPremium" Display="Dynamic" ErrorMessage="'Premium' must be decimal"
ForeColor="Red" Operator="DataTypeCheck" SetFocusOnError="true" Type="Double" />
</asp:TableCell>
在 UI 中,当我尝试向该文本框添加一个值,例如 10.0(带点)时,出现文本框错误消息。当我尝试输入 10,0(带逗号)之类的值时,它被接受了。我需要能够输入一个点。
我尝试将文本框的类型更改为货币,但出现了同样的错误。文本框类型列表中没有其他相关类型。
为了完成这里是我后面的代码中文本框的声明。
Dim _premium As Decimal = Decimal.Parse(txtPremium.Text)
我不确定如何让文本框接受点。
有什么想法吗?
Hi compare validator 用于比较两个字段之间的值,例如密码和匹配密码
如果您想验证小数,请改用表达式接受小数的正则表达式验证器。将以下表达式中的 2 替换为允许的最大十进制值 ^\d+.\d{0,2}
<asp:RegularExpressionValidator runat="server" ErrorMessage="Decimal Only" ID="txtregpre" ValidationGroup="Insert"
ControlToValidate="txtPremium"
ValidationExpression="^\d+\.\d{0,2}$"></asp:RegularExpressionValidator>
您可以使用正则表达式而不是比较验证,这里是适用于 10.0 和 10,0 的示例
<asp:TableCell>
<asp:TextBox ID="txtPremium" runat="server" Width="90px"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPremium" runat="server" ControlToValidate="txtPremium"
ErrorMessage="Required" ForeColor="Red" Display="Dynamic" ValidationGroup="Insert"></asp:RequiredFieldValidator>
<!-- Your Regular Expression Validator -->
<asp:RegularExpressionValidator ID="txtPremium_Integer"
ControlToValidate="txtPremium" ValidationGroup="Insert" ForeColor="Red"
runat="server" Display="Dynamic"
ErrorMessage="'Premium' must be decimal"
ValidationExpression="^\d+([,\.]\d{1,2})?$">
</asp:RegularExpressionValidator>
</asp:TableCell>
我有一个 ASP 页面,该页面中有一个文本框。此 TextBox 的类型为 Double,后端代码中的类型为 Decimal。
这是文本框。
<asp:TableCell>
<asp:TextBox ID="txtPremium" runat="server" Width="90px"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPremium" runat="server" ControlToValidate="txtPremium"
ErrorMessage="Required" ForeColor="Red" Display="Dynamic" ValidationGroup="Insert"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="txtPremium_Integer" runat="server" ValidationGroup="Insert"
ControlToValidate="txtPremium" Display="Dynamic" ErrorMessage="'Premium' must be decimal"
ForeColor="Red" Operator="DataTypeCheck" SetFocusOnError="true" Type="Double" />
</asp:TableCell>
在 UI 中,当我尝试向该文本框添加一个值,例如 10.0(带点)时,出现文本框错误消息。当我尝试输入 10,0(带逗号)之类的值时,它被接受了。我需要能够输入一个点。
我尝试将文本框的类型更改为货币,但出现了同样的错误。文本框类型列表中没有其他相关类型。
为了完成这里是我后面的代码中文本框的声明。
Dim _premium As Decimal = Decimal.Parse(txtPremium.Text)
我不确定如何让文本框接受点。
有什么想法吗?
Hi compare validator 用于比较两个字段之间的值,例如密码和匹配密码
如果您想验证小数,请改用表达式接受小数的正则表达式验证器。将以下表达式中的 2 替换为允许的最大十进制值 ^\d+.\d{0,2}
<asp:RegularExpressionValidator runat="server" ErrorMessage="Decimal Only" ID="txtregpre" ValidationGroup="Insert"
ControlToValidate="txtPremium"
ValidationExpression="^\d+\.\d{0,2}$"></asp:RegularExpressionValidator>
您可以使用正则表达式而不是比较验证,这里是适用于 10.0 和 10,0 的示例
<asp:TableCell>
<asp:TextBox ID="txtPremium" runat="server" Width="90px"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPremium" runat="server" ControlToValidate="txtPremium"
ErrorMessage="Required" ForeColor="Red" Display="Dynamic" ValidationGroup="Insert"></asp:RequiredFieldValidator>
<!-- Your Regular Expression Validator -->
<asp:RegularExpressionValidator ID="txtPremium_Integer"
ControlToValidate="txtPremium" ValidationGroup="Insert" ForeColor="Red"
runat="server" Display="Dynamic"
ErrorMessage="'Premium' must be decimal"
ValidationExpression="^\d+([,\.]\d{1,2})?$">
</asp:RegularExpressionValidator>
</asp:TableCell>