【问题标题】:Call javascript function when Page_isValid changes?Page_isValid 更改时调用 javascript 函数?
【发布时间】:2011-06-27 20:31:41
【问题描述】:

在我的 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) 得到验证组 的列表而不是单个验证器?

谢谢!

【问题讨论】:

  • 顺便说一句,奇怪的 try/catch 是因为我的验证器位于 GridView 控件中,并且当它不处于编辑模式时,请求 Page_Validators 变量会导致错误。如果有更好的方法来做到这一点——我确信有——我想听听。

标签: javascript asp.net events validation


【解决方案1】:

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

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

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

可以修改此逻辑以适合您的个人喜好,但重点是跟踪变量值的更改要容易得多在您更改它们的实例而不是在您需要访问时他们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多