有没有办法知道 .net 必填字段验证器是否从 js 启用或禁用

Is there any way to know if a .net required field validator is enabled or disabled from js?

本文关键字:是否 js 启用 验证 字段 net 有没有      更新时间:2023-09-26

我正在尝试获取.aspx文件中"必填字段验证器"的状态。

当我说状态时,我的意思不是它在内容方面是否有效或无效,而是它是否已启用。

我知道启用/禁用状态可以设置为 ValidatorEnable(control, true);ValidatorEnable(control, false);

那么有没有办法知道它是启用还是禁用?

提前谢谢。

您可以在客户端执行此操作。因此,假设您有一个必需的字段验证器:

<asp:TextBox ID="txtName" runat="server" ClientIDMode="Static"></asp:TextBox>
<asp:RequiredFieldValidator ID="reqValName" ControlToValidate="txtName" runat="server"
    CssClass="validation" ErrorMessage="*Required">
</asp:RequiredFieldValidator>

然后 ASP.NET 4.0 会为你生成以下 JavaScript:

var reqValName = document.all ? document.all["reqValName"] : document.getElementById("reqValName");
reqValName.controltovalidate = "txtName";
reqValName.errormessage = "*Required";
reqValName.enabled = "False";   // <---- HERE. Set to false on server side.
reqValName.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
reqValName.initialvalue = "";

如您所见,如果您禁用验证器,则会生成reqValName.enabled = "False";,但如果启用它,该行将不会显示。

因此,您可以检查该变量的值以确定它是否已启用。 请注意,它的值是一个字符串值,您可能需要将检查 JavaScript 放在页面底部。事实上,无论如何,将所有 JavaScript 放在页面底部(在关闭正文标签之前)是一件好事。

仅供参考,如果您使用的是 4.5 ASP.NET,您可以更轻松地检查它,因为该属性被放入 span 元素的 data-val-enabled 属性而不是 JavaScript 变量属性中。请参阅 ASP.NET 4.5 上生成的 HTML。

<span class="validation" id="reqValName" style="visibility: hidden;" data-val-initialvalue="" 
data-val-evaluationfunction="RequiredFieldValidatorEvaluateIsValid" data-val="true" data-val-enabled="False" 
data-val-errormessage="*Required" data-val-controltovalidate="txtName">