2 Stimmen

Rufen Sie Javascript-Funktion, wenn Page_isValid ändert?

In meinem asp.net-Formular möchte ich die einreichen immer dann, wenn die Validatoren versagen, d.h. immer dann, wenn Page_isValid = false -und aktivieren Sie sie anschließend wieder.

Ich kann dies tun, indem ich auf die onchange Ereignis jeder Kontrolle und Prüfung auf Page_isValid aber ich würde viel lieber auf die Änderung der Variablen selbst oder auf die Ausführung der Funktion, die die Änderung vornimmt, reagieren.

Nach meinen bisherigen Nachforschungen habe ich mir folgendes überlegt:

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" };
        }
    }
}

Es funktioniert, aber nicht sehr effizient. Ich muss alle Validierer in einer Schleife durchlaufen, und meine Funktion wird immer mehrere Male hintereinander ausgelöst.

Gibt es eine Möglichkeit, dass ich einfach (a) auf die Änderung dieses Begriffs zu reagieren Page_isValid variabel? oder sonst (b) erhalten eine Liste von Prüfergruppen und nicht die einzelnen Prüfer?

Gracias.

1voto

sichinumi Punkte 1805

In solchen Situationen setze ich meine Validatoren immer gerne neben den eigentlichen Code, der das, was ich prüfe, verändert.

In Ihrem Fall sollten Sie jedes Mal, wenn Sie Ihre Page_isValid-Variable ändern, eine Logik ausführen, die prüft, ob sich die Werte im Vergleich zum vorherigen Wert geändert haben. Wenn dies der Fall ist, prüfen Sie, ob sie jetzt True oder False ist, und deaktivieren oder aktivieren Sie die entsprechenden Seitenelemente.

Wenn Sie auf mehrere Seitenelemente zugreifen müssen, können Sie eine "updatePageElementsViaValidator"-Funktion erstellen und diese mit true oder false als Parameter unter Verwendung der gleichen Logik aufrufen; auf diese Weise können Sie ganze Teile Ihrer Seite mit einem einzigen Funktionsaufruf aktivieren oder deaktivieren.

Diese Logik kann Ihren persönlichen Vorlieben entsprechend angepasst werden, aber der wichtigste Punkt ist, dass es viel einfacher ist, Änderungen an Variablenwerten zu verfolgen in der Instanz, in der Sie sie ändern und nicht erst, wenn Sie darauf zugreifen müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X