Wie füge ich einen benutzerdefinierten Validator zur Papiereingabe hinzu?

8

Sie müssen einen benutzerdefinierten Validator hinzufügen, der eine komplexe Validierung basierend auf den Werten anderer Felder im HTML-Code durchführt.

Es wurde versucht, die benutzerdefinierte Validierungsfunktion als Attribut zum Papiereingabeelement hinzuzufügen, aber wird überhaupt nicht aufgerufen.

%Vor%     
AKh 12.08.2015, 02:29
quelle

2 Antworten

13

Der Validator muss IronValidatorBehavior implementieren (siehe Dokumente ) ). Wenn Sie die Validierung automatisch durchführen möchten, müssen Sie außerdem das Attribut auto-validate festlegen. Um Ihr Ziel zu erreichen, können Sie einen benutzerdefinierten Validator für jede Art von Validierung erstellen, die Sie verwenden möchten. Alternativ können Sie einen generischen benutzerdefinierten Validator erstellen und die Validierungsfunktion bei der Initialisierung festlegen. Hier ist ein Beispiel.

%Vor%

Sie finden ein funktionierendes Beispiel in diesem Plunk .

    
Maria 12.08.2015, 09:38
quelle
7

Ok, meine Antwort ist vielleicht nicht der "Polymer Weg", aber es funktioniert und ist mehr der "traditionelle programmatische" Weg.

Die kurze Liste der Ideen für diese Lösung:

  1. paper-input alias iron-input sucht den Wert des Validator-Attributs im globalen Eisen-Meta-Objekt
  2. Jedes Polymer.IronValidatorBehavior hat einen Namen (validatorName), einen Typ ('validator') und eine Validierungsfunktion
  3. Jedes Polymer.IronValidatorBehavior registriert sich in der entsprechenden 'Validator'-Liste im Iron-Meta-Objekt

Das ist also ein kurzer Code, den ich aus den obigen Punkten abgeleitet habe:

%Vor%

Sie können diesen Code in jeden 'angehängten' oder 'erstellten' Event-Handler einfügen. Aber führe es aus, bevor eine Validierung durchgeführt wird ...

Dann kannst du schreiben

%Vor%

Wenn Sie überprüfen möchten, ob Ihr Validator bei der Eingabe registriert ist, navigieren Sie den Dom-Baum in einem beliebigen Dev-Tool und klicken Sie auf %code%.validator.hasValidator() und %code% , um zu sehen, ob Ihr Validator erfolgreich mit der Eingabe registriert wurde.

    
Kjell 19.08.2015 14:43
quelle