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

标签 javascript asp.net

我在客户端设置自定义验证器时遇到问题。 基于特定的隐藏字段值,按钮的 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/

相关文章:

javascript - 尝试使用 for 循环将某个范围内的每个数字相加以创建总和

javascript - onchange 和 addEventListener 有何不同?

mysql - 在vb.net中向mysql数据库添加记录

javascript - 如何从具有绝对路径的对象数组构建类似文件系统的 JSON

javascript - 手动更新 dat.gui

javascript - 评估 Json - 嵌套的 JSON 路径作为字符串提供

c# - LINQ 冲突 - 行未找到或未更改

asp.net - VS2010错误: Unable to start debugging on the web server

c# - 当从代码后面单击按钮时,检查 Dataitemtemplate devexpress gridview 中的复选框状态

asp.net - 在 ASP.NET 应用程序之间传递 session 数据