Beispielcode zur Implementierung der Formularvalidierung mit reinem CSS

Beispielcode zur Implementierung der Formularvalidierung mit reinem CSS

In unserem täglichen Geschäft ist die Formularvalidierung eine sehr häufige Designanforderung. Einige Anmelde- und Registrierungsfelder sowie Fragebögen erfordern ebenfalls eine Formularvalidierung.

Im Allgemeinen besteht unsere Implementierungsidee darin, dass JS den Eingabeinhalt des Eingabefelds überwacht, den vom Benutzer eingegebenen Inhalt bestimmt und somit die nächste Operation festlegt.

Zum Beispiel: (Das folgende Beispiel stammt aus der hervorragenden Open-Source-UI-Bibliothek Element)

<el-form :model="NummerValidateForm" ref="NummerValidateForm" label-width="100px" class="demo-ruleForm">
  <el-form-item
    label="Alter"
    prop="Alter"
    :Regeln="[
      {erforderlich: true, Nachricht: ‚Alter darf nicht leer sein‘},
      { Typ: 'Zahl', Nachricht: 'Alter muss ein numerischer Wert sein'}
    ]"
  >
    <el-input Typ="Alter" v-model.number="numberValidateForm.Alter" autocomplete="aus"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('numberValidateForm')">Senden</el-button>
    <el-button @click="resetForm('numberValidateForm')">Zurücksetzen</el-button>
  </el-form-item>
</el-form>
<Skript>
  Standard exportieren {
    Daten() {
      zurückkehren {
        NummerValidateForm: {
          Alter: ''
        }
      };
    },
    Methoden: {
      Formular absenden(Formularname) {
        dies.$refs[formName].validate((gültig) => {
          if (gültig) {
            Warnung ('Senden!');
          } anders {
            console.log('Fehler beim Senden!!');
            gibt false zurück;
          }
        });
      },
      Formular zurücksetzen(Formularname) {
        dies.$refs[formName].resetFields();
      }
    }
  }
</Skript>

Das Obige ist unsere reguläre Ausdrucksüberprüfung, die im Wesentlichen mit JS abgeschlossen ist. Können wir sie also mit CSS implementieren? Die Antwort ist ja. Hier ist die DEMO

Implementieren der Formularvalidierung mit CSS

Die obige Formularvalidierung wird vollständig durch CSS implementiert und das Kernattribut ist CSS Level 4 Validity . Die Idee besteht darin, die Eigenschaften :valid und :invalid zu verwenden, um value von <input> zu beurteilen.

Hier ist der vollständige Code

/*
 * CSS
 */
 :Wurzel {
 	--Fehlerfarbe: rot;
 }
 .form > Eingabe {
 	Rand unten: 10px;
 }
 .form > .f-tips {
 	Farbe: var(--error-color);
 	Anzeige: keine;
 }
 Eingabe [Typ = "Text"]: ungültig ~ Eingabe [Typ = "Senden"],
 input[type="password"]:ungültig ~ input[type="submit"] {
 	Anzeige: keine;
 }
 Eingabe [erforderlich]: ungültig + Spanne {
 	Anzeige: inline;
 }
 
 /*
  *html
  */
<form class="form" id="form" method="get" action="/api/form">
    Konto:
    <input data-title="Konto" pattern="[\w]{6,10}" name="Konto" type="text" erforderlich />
    <span class="f-tips">Bitte geben Sie die korrekte Kontonummer ein</span>
    <br />
    Passwort:
    <input data-title="Passwort" pattern="[\w]{6,10}" name="Passwort" type="Passwort" erforderlich />
    <span class="f-tips">Bitte geben Sie das richtige Passwort ein</span>
    <br />
    <input name="button" type="submit" value="Senden" />
</form>

Screenshots von Effekten

Verwendete Wissenspunkte

1. Neue Attribute von <input> in HTML5 : pattern

Erklärung von MDN:

Regulärer Ausdruck zum Überprüfen des Steuerelementwerts. Das Muster muss mit dem gesamten Wert übereinstimmen, nicht nur mit einer Teilmenge. Verwenden Sie das Titelattribut, um den Modus zu beschreiben und Benutzern zu helfen. Dieses Attribut gilt, wenn der Wert des Typattributs „Text“, „Suche“, „Tel.“, „URL“ oder „E-Mail“ ist. Andernfalls wird es ignoriert. (Kompatibel mit IE10+)

Bemerkung:

Wenn die Validierungsregeln im pattern ungültig sind, z. B. zu viele Leerzeichen bei der Längenprüfung, wird ein Fehler in der Konsole gemeldet. Die Details sind wie folgt:

<input data-title="Konto" pattern="/[\w]{6, 10}/" name="Konto" type="text" erforderlich />

Die Validierungsregeln in CSS und JS sind unterschiedlich. Der folgende Text ist ungültig. Die Kernvalidierungsregeln müssen in [] eingeschlossen werden. (Derzeit ist dies bei mehreren getesteten Beispielen der Fall. Die spezifischen Details müssen noch in den Daten überprüft werden. Wenn jemand genauere Informationen hat, lassen Sie es mich bitte wissen. Danke!)

<input data-title="Konto" pattern="/\w{6,10}/" name="Konto" type="text" erforderlich />

2. Neue Eigenschaften von CSS Level 4 選擇器: invalid

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

<<:  Müssen Designer das Programmieren lernen?

>>:  Front-End-JavaScript-Housekeeper-Paket.json

Artikel empfehlen

Vue realisiert einfachen Effekt des Lauflichts

In diesem Artikel wird der spezifische Code von V...

js, um einen gleitenden Karusselleffekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

Detaillierte Erklärung der HTML-Download-Funktion

Das neue Projekt ist im Grunde abgeschlossen. Es ...

Zusammenfassung des JS-Ausführungskontexts und -umfangs

Inhaltsverzeichnis Vorwort Text 1. Konzepte im Zu...

Drei Möglichkeiten zum Weiterleiten des Linux-SSH-Ports

ssh ist eines der beiden Befehlszeilentools, die ...

Implementierungsschritte zum Erstellen mehrseitiger Programme mit Webpack

Es ist sehr üblich, webpack zum Erstellen einseit...

So lösen Sie das Problem des verstümmelten MySQL-Inserts

Problembeschreibung: Beim Einfügen chinesischer Z...

Anwendungsverschachtelung von HTML-ul-ungeordneten Tabellen

Anwendungsschachtelung ungeordneter Listen Code ko...

Hinweise zum Upgrade auf mysql-connector-java8.0.27

Kürzlich wurde bei einem Online-Sicherheitsscan e...

Schritte eines hervorragenden Registrierungsprozesses

Für eine Website ist dies die grundlegendste Funkt...

js realisiert Warenkorb-Add- und Subtraktions- sowie Preisberechnungsfunktionen

In diesem Artikel wird der spezifische Code von j...

Docker installiert ClickHouse und initialisiert den Datentest

Clickhouse-Einführung ClickHouse ist ein spalteno...

mysql IS NULL mit Indexfallerklärung

Einführung Die Verwendung von „ist null“, „ist ni...