Eingabetyp = Zurücksetzen und Aussparen

8

Knockout aktualisiert Observables nicht, wenn auf die Schaltfläche zum Zurücksetzen eines Formulars geklickt wird.

Ссылка

HTML:

%Vor%

JS:

%Vor%

Offensichtlich wird das Änderungsereignis des Eingabefeldes nicht ausgelöst, wie in diesem jQuery-Test zu sehen ist: Ссылка

Wie würden wir alle Observablen, die an die Eingabe von Eingängen gebunden sind, dazu zwingen, sie zu aktualisieren, ohne sie manuell spezifizieren zu müssen, wenn die Reset-Schaltfläche keine Änderungsereignisse auslöst?

Es wäre einfach genug, jQuery zu verwenden, um alle Eingaben innerhalb des Formulars zu finden und Änderungsereignisse auszulösen, aber nehmen wir an, wir haben eine knockout-kontrollierte Form.

    
Fergal 08.04.2013, 21:38
quelle

2 Antworten

2

Ich habe die standardmäßige Knockout-Bindungsbindung in der Reihenfolge kopiert und geändert Erstellen einer ähnlichen Bindung für das Formular zurücksetzen-Ereignis:

%Vor%

Sie würden dies wie folgt binden:

%Vor%

und onFormReset wären in Ihrem Ansichtsmodell:

%Vor%

Wenn Sie in Ihrem Zurücksetzungs-Handler den Wert true zurückgeben, ruft JavaScript weiterhin seine Reset-Funktion im Formular auf. Wenn Sie Observablen setzen, die wertgebunden sein müssen, müssen Sie das Formular nicht unbedingt erneut setzen. Daher können Sie technisch nichts zurückgeben oder in diesem Szenario false zurückgeben.

Jemand anders könnte dies weiter ausdehnen, um automatisch alle gebundenen Observablen im Formular zu benachrichtigen, aber das funktionierte für meine Zwecke.

    
crush 05.02.2015 16:24
quelle
1

Wie Sie bereits erwähnt haben, wird das Ereignis change nicht ausgelöst, wenn ein Formular zurückgesetzt wird. Wenn Sie nur KnockOut verwenden, glaube ich nicht, dass Sie wirklich Optionen haben, wenn Sie benutzerdefinierte Bindungen erstellen, die sich für das reset -Ereignis registrieren und Änderungen erkennen können - das würde immer noch manuelle JS beinhalten, aber zumindest wäre es zentralisiert .

Ein allgemeinerer Ansatz, obwohl jQuery erfordert, besteht darin, eine Funktion zum Behandeln des reset -Ereignisses des Formulars zu erstellen und zu diesem Zeitpunkt Änderungen an den Formulareingaben zu erkennen.

Hier ist ein Beispiel für einen Event-Handler, der funktionieren könnte. Bitte beachten Sie, dass dies kein produktionsfertiger Code ist. Ich würde es mit einem guten jQuery Auge betrachten, bevor ich benutze:)

%Vor%

Hier ist eine Geige, die die Idee zeigt: Ссылка

    
Joseph Gabriel 09.04.2013 06:08
quelle

Tags und Links