JavaScript: Zuweisen einer Funktion einer Eigenschaft, die jedes Mal neu ausgeführt wird, wenn die Eigenschaft aufgerufen wird

StackOverflow https://stackoverflow.com/questions/4979054

Frage

Ich erstellte eine HTML5-JS-Formular-Bibliothek. Die Idee besteht darin, Elemente mit einer Klasse von .Form-Element in Content-Editable-Divs zudrehen, indem die Datenattribute der Elemente als Anweisungen für die Art der Formularelement, Validierung usw. verwendet werden, die erstellt werden sollen.

Der folgende Code erstellt ein Validierungsobjekt für ein einzelnes Formularelement, das prüft, ob die Mindestlänge des Feldwerts erfüllt ist. Die Eigenschaften des Objekts umfassen das DOM-Element, das er für (EL), die Mindestlänge für das Feld (MINLEN), die Fehlermeldung (MSGERROR) gilt, die angezeigt werden soll, wenn diese Mindestlänge nicht erfüllt ist, und eine Funktion (Senden), die zurückgibt Ob das Objekt validiert, zeigt die Fehlermeldung an, wenn dies nicht der Fall ist.

Die Funktion Senden Eigenschaft gibt jedoch immer false zurück. Ich bin mir ziemlich sicher, dass ich weiß, warum, aber ich bin mir nicht sicher, ob der beste Weg ist, um es zu korrigieren. Ich glaube, das Problem, das ich renne, muss mit dem Begriff eines Verschlusses zu tun haben. Die Sendeneigenschaft überprüft die Länge des InnerHTML des Formularelementelements und vergleicht sie mit der MINEN-Eigenschaft. Ich denke, dass dies nur zum Zeitpunkt der Instantiierung des Validierungsobjekts passiert, wenn die innerhtml.länge immer 0 ist (da der Formularelement und das Validierungsobjekt erstellt werden müssen, bevor der Benutzer etwas in das Feld eingeben kann ). Wie soll ich den folgenden Code ändern, sodass die Funktion Senden Eigenschaftsfunktion jederzeit neu läuft, wenn er aufgerufen wird (dadurch die aktuelle Länge des InnerHTML des Felds, anstatt der Länge im Moment der Instantiierung)? generasacodicetagpre.

Ich habe mit einer Lösung gekommen, mit der das InnerHTML des Formularelementelements als Argument zur Sendeneigenschaftsfunktion folgt, wie folgt: generasacodicetagpre.

Ich mag es jedoch nicht, diese Lösung, da er redundant erscheint, um das DOM-Element im Element.submit-Code erneut anzugeben (da das Objekt bereits dieses DOM-Element in seiner EL-Eigenschaft enthält).

so ... was soll ich tun?

War es hilfreich?

Lösung

Ich bin ein Idiot.Ich habe den innerhtml auf die minimale Länge verglichen, anstatt der Länge des innerhtml bis zur minimalen Länge.Jetzt funktioniert es :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top