如何在客户端设置自定义验证器isValid属性

How to set custom validator isValid property on Client Side?

本文关键字:验证 isValid 属性 自定义 设置 客户端      更新时间:2023-09-26

我在客户端设置customvalidator时有问题。基于特定的隐藏字段值,按钮的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属性。请帮忙。

方法1

你可以尝试在button 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属性。这将使您能够更直接地控制您想要的验证器。下面的引用说

是有效的布尔属性。这是每个客户端验证器上的属性指示当前是否有效

我已经做了与前两个类似的事情,但我没有亲自尝试过这个。

一般

一般你使用的方法是直接操作asp.net验证器使用的javascript API。它不是很漂亮但是你可以得到你想要的控制

参考

给出了你要使用的javascript API的引用。这是一篇很长的文章,但你想要的是在大约一半的地方

http://msdn.microsoft.com/en-us/library/Aa479045

好运多

我真的需要离开这个,但你的代码是错误的在这里-它是OnClientClick。

 btnSend.OnClientClick = "someJavascriptFunction()";

使用这个来绑定事件。

btnSend.Attributes.Add("onclick","return someJavascriptFunction();")