Page_isValid更改时调用javascript函数?

时间:2011-06-27 20:31:41

标签: 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)获取验证组的列表,而不是单个验证器?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

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