我试图使用jquery禁用验证器.
我已经看过 使用JavaScript禁用ASP.NET验证器 ,其他几个做同样的事情.
它似乎不起作用,但它的突破.
我的代码:
$('.c_MyValdiators').each(function() { var x = $(this).attr('id'); var y = document.getElementById(x); ValidatorEnable(y[0], false); });
我得到错误: val未定义[打破此错误] val.enabled =(启用!= false);\r \n
或者,如果我使用
$('.c_MyValdiators').each(function() { ValidatorEnable($(this), false); OR ValidatorEnable($(this[0]), false); });
我得到错误:
val.style未定义[打破此错误] val.style.visibility = val.isvalid?"隐藏":"可见";\r \n
有什么想法或建议吗?
我相信ValidatorEnable采用ASP.net ID而不是ASP.net生成的ClientID.您还需要在CodeBehind中进行验证.
这是一个例子:
特别有用的是能够启用或禁用验证器.如果您只想在某些情况下进行验证,则可能需要更改服务器和客户端上的激活,否则您将发现用户无法提交页面.
这是上一个带有字段的示例,只有在取消选中复选框时才能验证该字段:
public class Conditional : Page { public HtmlInputCheckBox chkSameAs; public RequiredFieldValidator rfvalShipAddress; public override void Validate() { bool enableShip = !chkSameAs.Checked; rfvalShipAddress.Enabled = enableShip; base.Validate(); } }
这是客户端的等价物:
Same as Billing
参考:http://msdn.microsoft.com/en-us/library/aa479045.aspx
我只是偶然发现了你的问题[一年后].我也想使用JQuery在页面上禁用所有验证器,这是我处理它的方式.
$('span[evaluationfunction]').each(function(){ValidatorEnable(this,false);});
我在页面上查找具有evaluatefunction属性的每个span,然后为每个span调用ValidatorEnabled.
我认为代码的$('this')部分是导致hickup的原因.