我在客户端设置自定义验证器时遇到问题。 基于特定的隐藏字段值,按钮的 onClientClick 事件应该触发一个函数,该函数将 CustomValidator 的 isValid 属性设置为 false。
下面是一些代码: 隐藏代码:
protected void Page_Load(object sender, EventArgs e)
{
if (hiddenfieldValue == true)
{
btnSend.OnClick = "someJavascriptFunction()";
}
}
ASPX 文件:
function someJavascriptFunction()
{
if (hiddenfieldValue == true)
// Show Validation and dont do postback
vldValdiator.isValid = false;
return false; //Dont do Postback
else
return true; Do Postback
}
<asp:CustomValidator ID="vldValidator" runat="server" Text = "ABC"/>
我无法在客户端基于隐藏字段值设置 isValid 属性。 请帮忙 。提前致谢。
最佳答案
方法一
您可以尝试在按钮 onClientClick 事件中将 Page_IsValid
属性设置为 false。就 asp.net 验证器而言,这将强制页面进入非验证状态。
基本示例
function ButtonOnClickClient()
{
if ($('#hiddenFieldID').val() == 'someValue')
{
Page_IsValid = false;
}
}
老实说 - 我不相信 Page_IsValid 属性不会被重置。您需要尝试
方法2
您可以使 customvalidator 客户端验证检查隐藏字段,并在此基础上使验证器通过或失败验证。然后,按钮 onclient 单击事件可以调用 Page_ClientValidate()
函数,该函数将强制在页面上进行验证。然后,这将设置正确的验证属性。
基本示例 2
function CustomValidatorClientValidate(source, arguments)
{
if ($('#hiddenFieldID').val() == 'someValue'){
arguments.IsValid = true;
} else {
arguments.IsValid = false;
}
}
function ButtonOnClientClick()
{
Page_ClientValidate();
}
这使用了 JQuery - 因为我发现用这种方式编写示例更容易。绝不强制使用它。我还假设 asp.net 验证器 API 存在。如果您已包含这些控件,则应该如此,但您始终可以通过添加对函数名称的检查来收紧
还有
如果您正在使用您可能会使用的验证组,则调用将变为
Page_ClientValidate(validationGroupName);
方法3
您可以尝试一下,但设置 customvalidator 的 isvalid 属性。这应该可以让您更直接地控制您想要的验证器。下面的引用资料说
isvalid Boolean property.This is a property on each client validator indicating whether it is currently valid
我做过与前两个类似的事情,但我没有亲自尝试过这个。
一般情况
您使用的一般方法是直接操作 asp.net 验证器使用的 javascript API。它不是很漂亮,但你可以获得你想要的控制
引用
这提供了对您尝试使用的 javascript API 的引用。这是一篇很长的文章,但你想要的部分大约在一半左右
http://msdn.microsoft.com/en-us/library/Aa479045
祝你好运
更多
我真的需要离开这个,但你的代码在这里是错误的 - 它是 OnClientClick。
btnSend.OnClientClick = "someJavascriptFunction()";
关于javascript - 如何在客户端设置自定义验证器 isValid 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17251551/