Вызовите функцию JavaScript, когда Page_isValid изменится? - PullRequest
2 голосов
/ 28 июня 2011

В моей форме 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 Ответ

1 голос
/ 28 июня 2011

В таких ситуациях я всегда хотел бы поставить свои валидаторы рядом с реальным кодом, который изменяет то, что я проверяю.

В вашем случае, каждый раз, когда вы изменяете переменную Page_isValid, запускайте некоторыелогика, которая проверяет, изменились ли значения по сравнению с тем, что было ранее.Если это так, проверьте, является ли это True или False, и отключите или включите соответствующие элементы страницы.

Если вам нужно получить доступ к нескольким элементам страницы, вы можете создать функцию «updatePageElementsViaValidator» и вызвать ее с trueили false в качестве параметра, использующего ту же логику;таким образом, вы можете включить или отключить целые блоки вашей страницы с помощью одного вызова функции.

Эта логика может быть изменена в соответствии с вашими личными предпочтениями, но суть в том, что отслеживать изменения в переменной намного прощезначения в случае, когда вы изменяете их , а не когда вам нужно получить к ним доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...