我有一个简单的网页,几乎没有asp面板。我从数据库中搜索记录,这些面板在页面上可见 但是,当我在文本框中输入一个无效值来检查RequiredFieldValidator是否正常工作时,会显示错误消息。但是,表格中已经显示的面板不会被隐藏 我明白,因为表单没有回发帖子,所以这些面板不会被设置为不可见。如果requiredfieldvalitor抛出错误,可以指导我如何隐藏这些面板吗?
答案 0 :(得分:0)
您必须禁用ClientValidation
以允许回发,或使用自定义JavaScript。如果有明显的回发问题,您可以轻松使用UpdatePanels
。
答案 1 :(得分:0)
通过验证器的data-dependentClass附加依赖元素,并将此脚本放在表单结束标记
下面 <form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
Text="*" data-dependentClass="addressValidation" />
<br />
<asp:TextBox ID="TextBox2" runat="server" />
<br />
<asp:Button runat="server" Text="Click Me" />
<hr />
<asp:Panel runat="server" ID="Panel1" CssClass="addressValidation">
Rendered at:
<%= DateTime.Now.ToLongTimeString() %>
</asp:Panel>
</form>
<script type="text/javascript">
var originalValidatorUpdateDisplay = ValidatorUpdateDisplay;
ValidatorUpdateDisplay = function (val) {
originalValidatorUpdateDisplay.call(null, val);
var dependentClass = val.getAttribute("data-dependentClass");
if (dependentClass) {
elements = document.getElementsByClassName(dependentClass);
for (var i = 0; i < elements.length; i++) {
elements[i].style.display = val.isvalid === false ? "none" : "";
}
}
}
</script>