我有一个简单的网页,其中很少有 asp 面板。我从数据库中搜索记录,这些面板在页面上可见。
但是,例如,当我在文本框中输入无效值以检查 RequiredFieldValidator 是否工作正常时,会显示错误消息。但是表单上已经可见的面板不会被隐藏。
我了解,因为表单没有回发,因此这些面板没有设置为不可见。如果 requiredfieldvalitor 抛出错误,请指导我如何隐藏这些面板?
问问题
1001 次
2 回答
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>
于 2012-11-02T08:02:30.270 回答
0
您要么必须禁用ClientValidation
以允许回发,要么使用自定义 JavaScript。如果可见回发是一个问题,您可以轻松使用UpdatePanels
.
于 2012-11-02T07:35:26.747 回答