使用JavaScript禁用ASP.NET验证程序

时间:2008-12-30 14:12:26

标签: asp.net javascript validation

有谁知道如何使用JavaScript禁用ASP.NET验证程序? 我正在使用javascript style.display ='none'来禁用网页的各个部分。然而,这些禁用的部分有asp.net验证器仍在触发,我需要禁用然后不进行往返服务器。 感谢。

6 个答案:

答案 0 :(得分:52)

使用此代码段:

function doSomething()
{
  var myVal = document.getElementById('myValidatorClientID');
  ValidatorEnable(myVal, false); 
}

答案 1 :(得分:1)

此外,您可以将Visible属性设置为false,而不是简单地隐藏元素。

whateverItem.Visible = false;

这使得该项目不会呈现给页面,我认为这会禁用验证。如果我错了,请有人纠正我。

答案 2 :(得分:1)

这是一个古老的问题,但对于未给出的以下答案感到惊讶。我使用上面的评论实现了它并且完美无缺地工作

# enable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = true

#disable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = false

此实现可能有些棘手,因为请记住,如果javascript中存在错误,代码将退出,但您不会收到任何错误。一些有用的要点

  1. 确保您可以设置断点可以单步执行代码。如果没有重新启动浏览器。

  2. 在放置此代码的函数的开头设置断点。单步执行代码,如果出现错误,代码将退出,您将无法进入代码。

  3. 在firefox Firebug中,您可以在控制台选项卡中键入整个javascript语句,以查看语句返回的内容。最重要的是,您要检查控件的非空值。

答案 3 :(得分:1)

Per Glenn G上面的评论,我会用

myVal.enabled = false; 

禁用验证器而不是

ValidatorEnable(myVal, false); 

以下是我的经历:两个片段在我的2003服务器上使用.net framework 2.0都运行良好。但是,在带有.net框架4.0的服务器2008 R2上(我不确定是哪个导致了这个问题),我使用&#34; ValidatorEnable&#34;进行了意想不到的行为。我的页面上有标签(usercontrols),当我离开正在调用&#34; ValidatorEnable&#34;的标签时,它会暂时禁用下一个标签上的验证器(即使没有调用代码来禁用它们),直到下一次回发。

答案 4 :(得分:0)

以下是有关如何从JavaScript控制ASP.NET验证程序的详细文章:

How to control ASP.NET Validator Controls Client Side validation from JavaScript

答案 5 :(得分:0)

这样做的最佳方式,

function doSomething()
{
    var objvalidator = document.getElementById('myValidatorClientID');
    objvalidator.enabled = false;
    objvalidator.isvalid = true;
    ValidatorUpdateDisplay(objvalidator);
}