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

时间:2013-06-22 14:00:31

标签: javascript asp.net

我在客户端设置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属性。 请帮忙 。提前谢谢。

2 个答案:

答案 0 :(得分:3)

方法1

您可以尝试在onClientClick事件按钮中将Page_IsValid属性设置为false。就asp.net验证器而言,这会强制页面进入非验证状态。

基本示例

function ButtonOnClickClient()
{
   if ($('#hiddenFieldID').val() == 'someValue')
   {
      Page_IsValid = false;
   }
}

老实说 - 我不相信Page_IsValid属性不会被重置。你需要尝试

方法2

您可以使customvalidator客户端验证检查隐藏字段,并在此基础上使验证器通过或验证失败。按钮onclient click事件然后可以调用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。如果你已经包含了那些控件,但是你可以通过添加对函数名称的检查

来收紧

ALSO

如果您使用的验证组可能会成为

Page_ClientValidate(validationGroupName);

方法3

你可以尝试一下但是设置customvalidator的isvalid属性。这应该可以让您更直接地控制您想要的验证器。以下参考文献

  

无效的布尔属性。这是每个客户端验证程序的属性   指示它当前是否有效

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

一般

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

<强>参考

这提供了您尝试使用的JavaScript API的参考。这是一篇冗长的文章,但你想要的位置大约是一半

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

祝你好运

更多

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

 btnSend.OnClientClick = "someJavascriptFunction()";

答案 1 :(得分:0)

使用此绑定事件。

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