【发布时间】:2014-03-22 10:38:23
【问题描述】:
我有一个带有 6-12 个必填字段验证器的 aspx 用户控件。当我单击具有与验证器相同的验证组的提交按钮时,只有一些验证器显示他们的错误消息,然后一旦这些被更正并且我再次单击该按钮,其他验证器就会显示他们的消息。这很令人困惑。
这是两个文本框(在上下文中)和与验证组相关联的按钮的简化标记。
<%-- PRODUCT DETAIL --------------------------------------------------- --%>
<dl class="accordion" data-accordion="">
<dd>
<a href="#PanelProductDetail">Product Detail</a>
<div id="PanelProductDetail" class="content active">
<fieldset>
<%--<legend>Product Detail</legend>--%>
<div class="row">
<%-- NAME --------------------------------------------------- --%>
<div class="medium-4 small-12 columns">
<label>
Product Name <small>Required</small>
<asp:TextBox id="tbName" type="text" placeholder="Product Name" runat="server" />
<asp:RequiredFieldValidator runat="server" ID="rfvName" ControlToValidate="tbName"
Text="Please add a product Name" CssClass="error" ValidationGroup="AddProduct"
display="Dynamic" />
</label>
</div>
</fieldset>
</div>
</dd>
</dl>
<%-- PRODUCT PRICING AND INVENTORY --------------------------------------------------- --%>
<dl class="accordion" data-accordion="">
<dd>
<a href="#PanelProductPricing">Product Pricing and Inventory</a>
<div id="PanelProductPricing" class="content active">
<fieldset>
<div class="row">
<%-- PRICE ------------------------------------------%>
<div class="medium-4 small-12 columns collapse">
<div class="row collapse">
<label>Price <small>Required</small></label>
<div class="small-2 columns">
<span class="prefix">$</span>
</div>
<div class="small-10 columns">
<asp:TextBox runat="server" ID="tbPrice" placeholder="Retail Price" />
</div>
<asp:RequiredFieldValidator runat="server" ID="rfvPrice" ControlToValidate="tbPrice" Display="Dynamic"
Text="Please enter a price" CssClass="error" ValidationGroup="AddProduct" />
<asp:RegularExpressionValidator ID="rexvPrice" runat="server" ControlToValidate="tbPrice" Text="Invalid value for price"
ValidationExpression="^\$?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$"
ValidationGroup="AddProduct" CssClass="error"
display="Dynamic" />
</div>
</div>
</div>
</fieldset>
</div>
</dd>
</dl>
<div class="row">
<div class="large-3 medium-4 small-6 columns">
<asp:Button ID="btnSubmit" runat="server" Text="Add Product" CssClass="button postfix" CausesValidation="true" ValidationGroup="AddProduct" />
</div>
</div>
发生了什么(摘要)
在此示例中,第一次单击按钮时 tbPrice 会收到错误消息,只有当我在文本框中输入一个值然后再次单击提交按钮时,tbName 验证器才会显示它的错误。
我尝试过的
- 我认为可能存在 JS 冲突,所以我删除了包装 手风琴标记 - 没有解决它
- 我尝试更改控件在标记中出现的顺序 - 否 帮助
- 我尝试删除 display=dynamic - 没有帮助
问题
谁能帮我弄清楚为什么只有一些验证器在第一次单击按钮时被调用,然后在第一个验证器修复错误后调用剩余的验证器。
【问题讨论】:
标签: javascript html asp.net .net validation