English 中文(简体)
使用JavaScript禁用ASP.NET验证程序员。
原标题:
  • 时间:2008-12-30 14:12:25
  •  标签:

Does anyone know how to disable an ASP.NET validator using JavaScript? I m using javascript style.display = none to disable parts of a web page. However these disabled parts have asp.net validators that are still firing and I need to disable then without doing a round trip to the server. Thanks.

最佳回答

使用这段代码:

function doSomething()
{
  var myVal = document.getElementById( myValidatorClientID );
  ValidatorEnable(myVal, false); 
}
问题回答

这是一个老问题,但我惊讶地发现以下答案没有被给出。我使用了上面的评论来实现它,它可以完美地工作。

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

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

这个实现可能会有一些棘手,因为请记住,如果javascript有误,代码会退出,但您不会收到任何错误。以下是一些有用的提示。

  1. 请确保您可以设置断点 并且 可以单步执行代码。如果无法,请重新启动浏览器。

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

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

最好的方法像这样做,

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

根据Glenn G上面的评论,我会使用

myVal.enabled = false; 

禁用验证器而不是

ValidatorEnable(myVal, false); 

这是我所经历的:这两个片段在我的2003服务器上使用.net框架2.0都可以正常工作。然而,在具有.net框架4.0的server 2008 R2上(我不确定是哪个导致了问题),我在“ValidatorEnable”中遇到了意外的行为。我的页面上有选项卡(用户控件),当我离开调用“ValidatorEnable”的选项卡时,它会在下一个选项卡上暂时禁用验证器(即使没有调用代码来禁用它们),直到下一个postback。

此外,您可以将Visible属性设置为false而不仅仅隐藏元素...

无论什么项目.可见性 = 假;

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

以下是有關如何從 JavaScript 控制 ASP.NET 驗證程序的詳細文章:

如何从JavaScript控制ASP.NET验证控件的客户端验证。





相关问题
热门标签