geo*_*rtz 8 asp.net validation ajax
我有一个下拉(dropdown2),如果有内容,它是必需的,但它的选项数据是由另一个下拉(dropdown1)选择的ajax驱动的.有时dropdown2将为空,在这种情况下我不能要求它.所以我可以requiredFieldValidators通过调用这个来禁用javascript中的...
ValidatorEnable(document.getElementById(validatorId), false);
Run Code Online (Sandbox Code Playgroud)
这工作正常但服务器仍然触发requiredFieldValidator逻辑.是否有人知道如何强制服务器不验证验证器是否设置为false客户端?
小智 10
DISABLE
document.getElementById("<%=ReqVal.ClientID%>").style.visibility = "hidden";
document.getElementById("<%=ReqVal.ClientID%>").enabled = false;
Run Code Online (Sandbox Code Playgroud)
ENABLE
document.getElementById("<%=ReqVal.ClientID%>").style.visibility = "visible";
document.getElementById("<%=ReqVal.ClientID%>").enabled = true;
Run Code Online (Sandbox Code Playgroud)
为什么不使用客户端验证器?这样做让你的工作变得更加困难.如果您可以通过客户端访问它,为什么还要在服务器端打扰它?
我能想到的唯一另一件事是创建一个隐藏字段并通过客户端设置它,然后当你做回发来检查这个值并禁用/启用验证器.
例如,在此之后:
JS:
ValidatorEnable(document.getElementById(validatorId), false);
var hidden = document.getElementById(hiddenID);
hidden = "1";
Run Code Online (Sandbox Code Playgroud)
然后在你的加载事件中:
If (hidden = "1") then
validator.enabled=false
end if
Run Code Online (Sandbox Code Playgroud)
看一下这篇文章,与你的相似:ASP.NET - 如何阻止不需要的服务器验证
小智 6
需要验证器作为 span 元素注入到 DOM 中。
如果您使用 JQUERY,请使用 jQuery 选择器获取元素,然后从您设置的选择中获取 DOM 元素。
这是一个例子:
假设您有一个要求验证器 id="MyReqValidator"。
在你的 javascript 文件中你将执行以下操作:
//The jQuery Element:
jqValidator = $("span[id$=MyReqValidator]");
//No the DOM element. This is what document.getElementById would return.
domValidator = jqValidator.get(0)
//Now enable your validator:
ValidatorEnable(validator, true);
Run Code Online (Sandbox Code Playgroud)
全部在一行代码中
ValidatorEnable( $("span[id$=MyReqValidator]").get(0), true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27998 次 |
| 最近记录: |