javascript - Page_isValid 更改时调用 javascript 函数?

标签 javascript asp.net events validation

在我的 asp.net 表单上,我想在验证器失败时禁用 submit 按钮——即任何时候 Page_isValid = false——然后​​重新启用它然后。

我可以通过响应每个控件的 onchange 事件和测试 Page_isValid 来做到这一点,但我更愿意响应变量本身的变化,或执行进行更改的功能。

根据我目前的研究,这是我编造的:

Sys.Application.add_load(AddValidatorHandlers);

function AddValidatorHandlers() {
    var validatorList;
    try { validatorList = Page_Validators; } catch (err) { }
    if (validatorList) {
        for (i in validatorList) {
            validatorList[i].onpropertychange = function () { "MY CODE GOES HERE" };
        }
    }
}

它有效,但效率不高。我必须遍历所有验证器,而且我的函数总是连续触发多次。

有没有一种方法可以简单地(a) 响应Page_isValid 变量的更改?或者 (b) 获取验证组列表而不是单个验证器列表?

谢谢!

最佳答案

对于这些类型的情况,我总是喜欢将我的验证器放在改变我正在检查的内容的实际代码旁边。

在您的情况下,每次更改 Page_isValid 变量时,运行一些逻辑来检查它是否更改了与之前的值相比的值。如果是,请检查它现在是 True 还是 False,然后禁用或启用相应的页面元素。

如果您需要访问多个页面元素,您可以创建一个“updatePageElementsViaValidator”函数并使用相同的逻辑以 true 或 false 作为参数调用它;这样,您可以通过单个函数调用启用或禁用页面的整个 block 。

此逻辑可以根据您的个人喜好进行修改,但要点是跟踪变量值的更改在您更改它们的实例时比您需要访问时要容易得多他们。

关于javascript - Page_isValid 更改时调用 javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498605/

相关文章:

javascript - 我在 Angular 项目中有多个 ngFor 使用 trackBy :trackByFunction with single function or create multiple function?

javascript - 如何使用 Enter 键作为事件处理程序 (javascript)?

c# - 通过 COM 从 Delphi 触发 .NET DLL 中的事件的问题

javascript - 如果 iframe 中发生 mousedown,文档将不会触发 mousemove 事件

javascript - 处理链中的 promise 错误,我是不是太急切了?

javascript - 在光滑的 slider 中居中图像

c# - 如何保持进程在远程 Windows 服务器上运行

asp.net - 如何使用 jquery 将自定义 header 添加到 ASMX Web 服务调用?

asp.net - 当 IIS 已经处理请求并发时,为什么要使用异步 Controller ?

javascript - 如何将选择元素中的选项与子字符串匹配?