Implementierung der Validierung mehrerer Elemente im Formular

Implementierung der Validierung mehrerer Elemente im Formular

Im Projekt werden häufig Formulartests durchgeführt. Für einen einzelnen Formulartest können Sie das Dokument auf der offiziellen Website von Element anzeigen, das eine ausführliche Einführung enthält. Hier teile ich meine Erfahrungen mit der gleichzeitigen Überprüfung mehrerer Formulare in einem tatsächlichen Projekt und meine Lösung. Jeder ist herzlich eingeladen, eine Nachricht zu hinterlassen und gemeinsam über verwandte Technologien zu diskutieren. Bitte geben Sie mir weitere Ratschläge.

Zur Lösung dieses Problems wird hier hauptsächlich Promise verwendet.

Nehmen wir ein Beispiel, um die Promise-Methode abstrakt zu verstehen:

Wenn du am Wochenende Hotpot essen möchtest, ruf Xiao A an und sag ihm, er soll zu mir zum Hotpot kommen. Alle Gerichte sind fertig, außer den Meeresfrüchten. Du kannst welche mitbringen, wenn du kommst. Dann rief ich meinen Freund Xiao B an und bat ihn, zu mir zum Eintopf zu kommen. Es gibt Meeresfrüchte, aber nicht genug Fleisch. Du kannst etwas mitbringen, wenn du kommst. Dann rief ich meinen Freund Xiao C an: Komm zu mir zum Eintopfessen. Ich habe das ganze Geschirr und wir sind fast fertig mit Wein. Bring mir ein paar Flaschen mit, wenn du kommst. Mir fehlt noch eine Packung Hot Pot Base. Ich holte mein Handy heraus und rief: „Xiao D, komm und hilf mir. Warum seid ihr alle hier? Mein Elektroherd funktioniert nicht richtig. Alles ist vorbereitet. Kannst du den Herd und auch die Packung mit der Base herbringen?“

Eintopf essen ist jetzt ein Kinderspiel, so lecker.

Aber diese Angelegenheit. Es läuft nicht immer alles glatt, es gibt immer Leute, die nicht kommen können, oder? Wenn sie nicht kommen können, können wir den Hotpot nicht genießen.

Tatsächlich läuft die Überprüfung mehrerer Formulare ähnlich ab. Jedes Formular wird einmal abgefragt. Wenn alle Formulare bestehen, ist alles in Ordnung. Wenn eine Überprüfung fehlschlägt, tut es mir leid, aber ich muss den Benutzer zuerst auffordern, das Formular korrekt auszufüllen.

Durch Promise wird die Abfrageerkennung für jedes Formular durchgeführt. Unabhängig vom Ergebnis geben Sie zuerst Promise.all ein und warten, bis alle Formulare abgefragt wurden. Wenn alle in Ordnung sind, lösen Sie es dann aus, was großartig ist. Im Gegenteil, wenn die Ausführung im Catch fehlschlägt, ist die Antwort ok.

     const formName = ['tableForm1', 'tableForm2', 'tableForm3']
      const validiert = (Element) => {
        returniere neues Promise((lösen, ablehnen) => {
          wenn (!this.$refs[item]) {
            lösen()
            return false
          }
          dies.$refs[item].validate((valid) => {
            if (gültig) {
              lösen()
            } anders {
              reject(new Error('Die Überprüfung ist falsch'))
            }
          })
        })
      }
      Promise.all(formName.map(item => validiert(item))).then(() => {
        console.log('Erfolg')
      }).catch(() => {
        console.log('fehlgeschlagen')
      })
    }
  }

Abschließend hier noch der vollständige Code:

  <div Klasse="Startseite">
    <el-form :model="tableForm1" ref="tableForm1" :rules="Regeln1" label-width="100px" >
      <el-form-item label="Preis" prop="Preis">
        <el-input v-model.number="tableForm1.price" autocomplete="aus"></el-input>
      </el-form-item>
    </el-form>

    <el-form :model="tableForm2" ref="tableForm2" :rules="rules2" label-width="100px" >
      <el-form-item label="Alter" prop="Alter">
        <el-input v-model.number="tableForm2.age" autocomplete="aus"></el-input>
      </el-form-item>
    </el-form>

    <el-form :model="tableForm3" ref="tableForm3" :rules="rules3" label-width="100px" >
      <el-form-item label="Name" prop="Name">
        <el-input v-model.number="tableForm3.name" autocomplete="aus"></el-input>
      </el-form-item>
    </el-form>

    <el-button type="primary" @click="submitForm">Senden</el-button>
    <el-button @click="resetForm">Zurücksetzen</el-button>
    
  </div>
</Vorlage>

<Skript>
Standard exportieren {
  Name: "Home",
  Daten () {
    zurückkehren {
      Tabellenform1: {
        Preis: ''
      },
      Tabellenform2: {
        Alter: ''
      },
      Tabellenform3: {
        Name: ''
      },
      Regeln1: {
        Preis: [{ erforderlich: true, Nachricht: ‚Preis darf nicht leer sein‘, Auslöser: ‚Unschärfe‘ }]
      },
      Regeln2: {
        Alter: [{ erforderlich: wahr, Nachricht: ‚Alter darf nicht leer sein‘, Auslöser: ‚unscharf‘ }]
      },
      Regeln3: {
        Name: [{ erforderlich: true, Nachricht: ‚Name darf nicht leer sein‘, Auslöser: ‚unscharf‘ }]
      }
    }
  },
  Methoden: {
    Formular zurücksetzen () {
      dies.$refs.tableForm1.resetFields()
      dies.$refs.tableForm2.resetFields()
      dies.$refs.tableForm3.resetFields()
    },
    Formular absenden () {
      const formName = ['tableForm1', 'tableForm2', 'tableForm3']
      const validiert = (Element) => {
        returniere neues Promise((lösen, ablehnen) => {
          wenn (!this.$refs[item]) {
            lösen()
            return false
          }
          dies.$refs[item].validate((valid) => {
            if (gültig) {
              lösen()
            } anders {
              reject(new Error('Die Überprüfung ist falsch'))
            }
          })
        })
      }
      Promise.all(formName.map(item => validiert(item))).then(() => {
        console.log('Erfolg')
      }).catch(() => {
        console.log('fehlgeschlagen')
      })
    }
  }
}
</Skript>

Dies ist das Ende dieses Artikels über die Implementierung mehrerer Formularvalidierungen in Elementen. Weitere relevante Inhalte zur Elementformularvalidierung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Vue ElementUI Form-Formularvalidierung
  • Implementierung der Validierungsregel für Vue Element-ui-Formulare
  • Die übergeordnete Vue-Element-UI-Komponente steuert den Formularvalidierungsvorgang der untergeordneten Komponente
  • Detaillierte Erläuterung der Konfigurationsregeln für Element-UI-Formularvalidierungsregeln Common Black Technology
  • Implementierungscode für die Vue ElementUI-Formularvalidierung (mehrschichtige Verschachtelung)
  • Vue ElementUI-Formularvalidierungsfunktionsarray mit mehrschichtiger Verschachtelung
  • Vue + Element realisiert die Formularvalidierungsfunktion
  • Elementimplementierung der Formularvalidierung durch eine v-for-Schleife

<<:  Detailliertes Tutorial zur Installation von MySQL 8.0.13 (rpm) auf Centos7

>>:  So richten Sie eine automatische tägliche Datenbanksicherung in Linux ein

Artikel empfehlen

So aktivieren Sie die Protokollfunktion für langsame Abfragen in MySQL

Das MySQL-Protokoll für langsame Abfragen ist seh...

Beheben des Problems, dass Notizendetails auf Webseiten grau werden

1. Wenn im Internet Explorer die relative Position...

js, um einen gleitenden Karusselleffekt zu erzielen

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

Verwendung des Linux-Befehls „userdel“

1. Befehlseinführung Der Befehl userdel (User Del...

Reines CSS zum Hinzufügen von Stil zur ausgewählten Implementierung (kein Skript)

Ändern Sie den Standardstil der Auswahl, normalerw...

MySQL-Anmelde- und Beendigungsbefehlsformat

Das Befehlsformat für die MySQL-Anmeldung ist: my...

Docker-Bindung mit fester IP/Hostübergreifender Container-Gegenzugriffsvorgang

Vorwort Bisher waren statische IPs, die über Pipe...

Der gesamte Prozess der lokalen Konfiguration des Reverse-Proxys über Nginx

Vorwort Nginx ist ein leichtgewichtiger HTTP-Serv...

Ein Artikel zum Umgang mit Mysql-Datums- und Zeitfunktionen

Inhaltsverzeichnis Vorwort 1. Aktuelle Uhrzeit er...

Einfache Implementierungsmethode der bidirektionalen Datenbindung im JS-Projekt

Inhaltsverzeichnis Vorwort Publish-Subscriber-Mus...

Häufig verwendete JS-Funktionsmethoden im Frontend

Inhaltsverzeichnis 1. E-Mail 2. Mobiltelefonnumme...

Grafisches Tutorial zur Installation von MySQL 5.5 unter Win7

Die MySQL-Installation ist relativ einfach. Norma...

impress.js Präsentationsschicht-Framework (Demonstrationstool) - erste Erfahrungen

Ich habe ein halbes Jahr lang nicht gebloggt, wofü...