【发布时间】:2016-02-23 04:21:56
【问题描述】:
我有两个这样的文本框:
<asp:TextBox ID="textBox1" runat="server" />
<asp:RegularExpressionValidator ID="regExTextBox1" runat="server" ControlToValidate="textBox1" ErrorMessage="Not a positive real number." Display="Dynamic" ValidationExpression="(^0*[1-9]+\d*(\.\d+)?$)|(^0*\.0*[1-9]+\d*$)" />
<asp:RequiredFieldValidator ID="reqFldTextBox1" runat="server" ControlToValidate="textBox1" ErrorMessage="Enter a number." Display="Dynamic" />
<asp:TextBox ID="textBox2" runat="server" />
<asp:RegularExpressionValidator ID="regExTextBox2" runat="server" ControlToValidate="textBox2" ErrorMessage="Not a positive real number." Display="Dynamic" ValidationExpression="(^0*[1-9]+\d*(\.\d+)?$)|(^0*\.0*[1-9]+\d*$)" />
<asp:RequiredFieldValidator ID="reqFldTextBox2" runat="server" ControlToValidate="textBox2" ErrorMessage="Enter a number." Display="Dynamic" />
<asp:CompareValidator id="compareValidator" runat="server" ControlToValidate="textBox2" ControlToCompare="textBox1" Type="Double" Display="Dynamic" Operator="LessThan" Text="Error." />
这两个文本框具有正则表达式验证器,这些验证器将它们限制为只允许正实数。这些工作正常。
我还希望第二个文本框中的输入小于第一个。为此,我有一个比较验证器。
当用户有正确的数字时,比较验证器可以正常工作。
当他们输入任何未能通过第二个正则表达式验证器的内容时,比较验证器也会同时触发。
第一个文本框中的内容、有效输入、错误输入或什至什么都没有关系。第二个验证器都失败了。
即使验证器应该比较双精度数。
有没有简单的解决方法?
我意识到这种行为是好的,因为验证器在应该是无效的时候是无效的,但是用户会看到不正确的错误消息。
我已经完成了一个涉及自定义验证器和 Javascript 的解决方案,如果归结为它,那么我将不得不再次这样做。但如果是这种情况,那么使用比较验证器就没有多大意义了,因为它永远不会与正则表达式验证器一起使用。
【问题讨论】:
标签: asp.net validation