其他控件需要的字段验证器触发

时间:2012-06-04 05:50:23

标签: asp.net requiredfieldvalidator

我有一个用于修改客户信息的页面,我在页面上为每条客户信息允许两个文本框,所以如果客户有5条信息,那么我的页面将有10个文本框,一个用于显示旧值一个用于输入新值。所有具有原始信息的文本框都是可见的,然后根据用户选择修改哪些列文本框可见。

所有文本框都需要字段验证器,用于输入新值。我们允许单场修改。我面临的问题是,假设用户选择修改用户的指定字段并且指定字段没有任何值,然后其他一些字段让组织名称没有值,只有选定的字段相应的文本框将是可见的,当我尝试提交信息时,它会给我一个错误,即组织名称是必需的,即使组织名称的新文本框不可见,任何关于为什么会发生这种情况的想法?

修改

<td align="right"><span>Designation:</span></td>
<td>
    <asp:TextBox runat="server" ID="ModifyCustomerByCategorytxtDesignation"
        class="ModifyCustomerByCategoryTextbox"></asp:TextBox>
</td>
<td>
    <asp:TextBox runat="server" ID="ModifyCustomerByCategorytxtNewDesignation"
        class="ModifyCustomerByCategoryTextbox"></asp:TextBox>
    <asp:RequiredFieldValidator ValidationGroup="Group6"
        ControlToValidate="ModifyCustomerByCategorytxtNewDesignation" runat="server"
        EnableClientScript="true" Display="Dynamic" 
        ErrorMessage="The Designation field is required." Text="*">
    </asp:RequiredFieldValidator>
</td> 

2 个答案:

答案 0 :(得分:1)

如果您只允许单个字段修改,则为每个字段添加一个单独的按钮,并使其与该字段验证器共享一个唯一的ValidatinGroup(您的问题是因为它们共享一个{{1} },所以他们都得到验证,可见或不可见。)

答案 1 :(得分:0)

 <asp:TextBox runat="server" ID="ModifyCustomerByCategorytxtDesignation"
    class="ModifyCustomerByCategoryTextbox"></asp:TextBox>
 <asp:CustomValidator ID="cvmodify" runat="server" 
    ClientValidationFunction="modify" CssClass="validators" ErrorMessage="*" 
        Display="Dynamic" SetFocusOnError="True" ></asp:CustomValidator>
 <td>
 <asp:TextBox runat="server" ID="ModifyCustomerByCategorytxtNewDesignation"
    class="ModifyCustomerByCategoryTextbox"></asp:TextBox>
 <asp:CustomValidator ID="cvModify" runat="server" 
    ClientValidationFunction="modify" CssClass="validators" ErrorMessage="*" 
        Display="Dynamic" SetFocusOnError="True" ></asp:CustomValidator>


 <script language="javascript" type="text/javascript">
   function modify(oSrouce, args) {
     var myTextBox = document.getElementById('<%= ModifyCustomerByCategorytxtDesignation.ClientID %>');
     var myTextBox = document.getElementById('<%= ModifyCustomerByCategorytxtDesignation.ClientID %>');

                if (myTextBox.value) {
                    if (myTextBox.value == "")
                        args.IsValid = false;
                    else
                        args.IsValid = true;
                }
            }
 </script>