使用 JavaScript 禁用 ASP.NET 验证器
Posted
技术标签:
【中文标题】使用 JavaScript 禁用 ASP.NET 验证器【英文标题】:Disable ASP.NET validators with JavaScript 【发布时间】:2010-09-28 20:36:12 【问题描述】:有谁知道如何? 我正在使用 javascript style.display = 'none' 禁用网页的某些部分。但是,这些禁用的部分具有仍在触发的 asp.net 验证器,我需要禁用它而不需要往返服务器。 谢谢。
【问题讨论】:
【参考方案1】:使用这个sn-p:
function doSomething()
var myVal = document.getElementById('myValidatorClientID');
ValidatorEnable(myVal, false);
【讨论】:
注意:这不适用于带有 Firefox 的 ASP.NET 1.1 ***.com/questions/3640183/… 另一个问题是验证器仍然在服务器端启用,这可能会给您下一次回发带来惊喜。 这会触发客户端验证。在 sn-p 中,使用:myVal.enabled = false;而不是 ValidatorEnable;禁用验证器【参考方案2】:这是一个古老的问题,但对它没有给出的以下答案感到惊讶。我使用上面的 cmets 实现了它并且可以完美地工作
# enable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = true
#disable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = false
此实现可能有些棘手,因为请记住,如果 javascript 中有错误,代码将退出,但您不会收到任何错误。一些有用的点
确保您可以设置断点并且可以单步执行代码。如果不重启浏览器。
在放置此代码的函数的开头设置断点。单步执行代码,如果有错误,代码将退出,您将无法单步执行代码。
在 firefox Firebug 中,您可以在控制台选项卡中键入整个 javascript 语句以查看语句返回的内容。最重要的是,您要检查控件的非空值。
【讨论】:
【参考方案3】:此外,您可以将 Visible 属性设置为 false,而不是简单地隐藏元素...
whateverItem.Visible = false;
这使得该项目根本不会呈现到页面,我相信这会禁用验证。如果我错了,请有人纠正我。
【讨论】:
您是正确的,它不会呈现到页面,但这需要回发,而 Javascript 不需要。 不起作用。即使控件被隐藏,附加到它的验证器也会尝试对其进行验证【参考方案4】:这样做的最佳方式,
function doSomething()
var objvalidator = document.getElementById('myValidatorClientID');
objvalidator.enabled = false;
objvalidator.isvalid = true;
ValidatorUpdateDisplay(objvalidator);
【讨论】:
【参考方案5】:根据 Glenn G 的上述评论,我会使用
myVal.enabled = false;
禁用验证器而不是
ValidatorEnable(myVal, false);
这是我的经验:两个 sn-ps 在我的 2003 服务器上运行良好,带有 .net framework 2.0。但是,在带有 .net 框架 4.0 的服务器 2008 R2 上(我不确定是哪个导致了问题),我遇到了“ValidatorEnable”的意外行为。我的页面上有标签(用户控件),当我离开调用“ValidatorEnable”的标签时,它会暂时禁用下一个标签上的验证器(即使没有调用代码来禁用它们),直到下一次回发。
【讨论】:
我发现这个解决方案在框架 4.6.1 中更适合我,ValidatorEnable 给了我一个 Page.Validators 错误。 我还发现,如果我在代码中启用验证器并通过 JavaScript 禁用它们,它们仍然会在服务器上验证为 true。我在前端代码中禁用了它们,并创建了一个 JavaScript 函数,如果需要,它将启用验证器并在 Sys.Application.add_load 中运行它。验证器将客户端验证,然后处理服务器。如果它失败了,它会在客户端验证时失败,这对我来说已经足够了。【参考方案6】:这里是关于如何从 JavaScript 控制 ASP.NET 验证器的详细文章:
How to control ASP.NET Validator Controls Client Side validation from JavaScript
【讨论】:
请在分享链接的同时分享相关代码...链接已失效!!!以上是关于使用 JavaScript 禁用 ASP.NET 验证器的主要内容,如果未能解决你的问题,请参考以下文章
使用 javascript 和 asp.net 启用和禁用按钮
asp.net c#.net jquery / javascript 如何使用复选框启用或禁用 requiredfieldvalidator