从 asp.net 的验证器获取关于状态更改的事件到 jquery

Posted

技术标签:

【中文标题】从 asp.net 的验证器获取关于状态更改的事件到 jquery【英文标题】:Get a Event from asp.net's validators to jquery on status change 【发布时间】:2011-03-16 12:42:26 【问题描述】:

如果我的页面的验证器改变了它们的状态,我希望在 jquery 中触发一个事件。

这是我的用例:

    在 Adressform 中,所有验证器都是隐藏的。 如果我提交表单,则会显示。 现在我想触发一个 jQuery 函数,它用红色边框渲染所有行(不是输入字段,而是它们的父字段)(意味着添加一个 css 类) 如果我现在更改字段并隐藏验证器,我还想隐藏输入父级周围的边框

我不想让计时器每 100 毫秒检查一次显示的验证器(这将完美运行),但我只想收听验证器的显示/隐藏事件

任何想法,我如何向验证器的更改事件添加侦听器?

问候 克里斯托夫

【问题讨论】:

【参考方案1】:

以下是从 javascript 调用 .NET 验证器的方法:Manually calling ASP.NET Validation with JavaScript 您可以将上述内容与 jQuery 事件或 jQuery Validation 集成。

注意:此解决方案是如果您绑定到 .NET 验证器,否则只需使用 Dave 提到的 jQuery 验证。

【讨论】:

因为我想保持 asp.net 验证正常工作,所以我使用了您链接中的方法(向按钮单击事件添加功能,调用 Page_ClientValidate 并检查页面上的验证器)谢谢提示。【参考方案2】:

您是否查看过标准 jQuery validator plugin?我很确定它的验证器有你可以按照你描述的方式挂钩的事件。

【讨论】:

我想要一个从 asp.net 验证器到 jquery 的事件,而不是另一个方向。【参考方案3】:

很抱歉回答这个老问题,但我写了一篇关于 modifying the default javacscript evaluation function of the ASP.NET validators 的博文。基本上可以归结为:

for (var i = 0; i < window.Page_Validators.length; i++) 
    // Create a new property and assign the original evaluation function to it
    window.Page_Validators[i].baseEvaluationFunction = window.Page_Validators[i].evaluationfunction;

    // Set our own validation function
    window.Page_Validators[i].evaluationfunction = evaluateField;

接下来,在 'evaluateField' 函数中,编写代码来设置 css。

function evaluateField (validator) 
    // Run the original validation function
    var isvalid = validator.baseEvaluationFunction(validator);

    // Handle the result
    if (isvalid) 
        clearError(validator);
     else 
        setError(validator);
    

    // Return result
    return isvalid;

在 setError 和 clearError 函数中,您可以使用 jquery 查找父行并将 css 应用于它。希望这会有所帮助!

【讨论】:

以上是关于从 asp.net 的验证器获取关于状态更改的事件到 jquery的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 需要从客户端更改验证器

什么是在 asp.net 中返回验证器状态的内置 javascript 函数

ASP.NET:如何在订阅的事件处理程序中更新前端

asp.net 环境下当javascript验证不通过是禁止button按钮执行onclick事件的

使用 C# ASP.NET 获取原始日期和时间

如何在 ASP.NET MVC 中获取模型状态错误的集合?