2

我怎么能只接受一个“。” 在只接受数值的文本框中?我正在使用一个名为FilteredTextBoxExtender

这是我的示例代码:

<asp:TextBox ID="txtMNumberOfHours" runat="server" 
Width="50px" MaxLength="10"></asp:TextBox>

<asp:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" runat="server" 
 FilterType="Numbers, Custom" ValidChars="." 
 TargetControlID="txtMNumberOfHours" ></asp:FilteredTextBoxExtender>

在这段代码中,我可以输入多个“。” 这不好。

4

5 回答 5

3

使用 regexvalidator 或 maskededit 扩展器怎么样?

使用 maskededitextender 你可以做

<asp:MaskedEditExtender ID="MaskedEditExtender1" 
   runat="server" TargetControlID="txtMNumberOfHours"
   Mask="99.99" MaskType="Number" InputDirection="RightToLeft" />

这将允许总共有四位数字,左侧为 2,点右侧为 2。

于 2013-01-15T03:35:57.730 回答
1

FilteredTextBoxExtender 在输入时一次只查看一个字符,因此它不会查看整个内容以查看输入了多少句点。

我建议使用 RegularExpressionValidator。

于 2013-01-15T03:40:38.490 回答
0

在 asp.net 中处理此问题的最佳方法是编写一些自定义 javascript 验证。

您可以使用以下 reg-ex 来验证该值。

^[-]?((\d+)|(\d+\.\d+)|(\.\d+))$

如果你使用 jQuery,你可以使用blur事件在客户端进行验证。

当然,你应该总是在服务器端再次解析它,而不是假设客户端会给你正确的数据。

于 2013-01-15T03:39:59.033 回答
0

这样做的一种方法是使用 RegEx 检查字符串是否有任何额外的 .'s,因为我不是 RegEx 专家,我绝不会将其留给其他成员。但是您会检查 TextBox 上的 OnTextChanged 事件。

于 2013-01-15T03:35:40.203 回答
-1

这是解决方案

 <ajaxToolkit:FilteredTextBoxExtender ID="txtPrice_Filter" runat="server" BehaviorID="txtPrice_Filter" FilterType="Custom, Numbers" TargetControlID="txtPrice" ValidChars="." />
于 2016-09-16T21:45:16.463 回答