Vue implementiert eine Countdown-Schaltfläche für den Bestätigungscode

Vue implementiert eine Countdown-Schaltfläche für den Bestätigungscode

In diesem Artikelbeispiel wird der spezifische Code von Vue zur Implementierung der Countdown-Schaltfläche für den Bestätigungscode zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

1. Klicken Sie auf die Schaltfläche „Bestätigungscode senden“ und führen Sie eine logische Beurteilung durch:

▶️ Wenn die E-Mail-Adresse eingegeben wurde und das Format korrekt ist: Der Button ändert sich in „Gesendet“ , ist nicht anklickbar und startet einen Countdown von 120 Sekunden ;
▶️ Wenn die E-Mail-Adresse nicht eingegeben wurde oder das Format falsch ist, wird eine Fehlermeldung angezeigt.

2. Nach Ablauf des 120-s-Countdowns ändert sich die Schaltfläche in „Bestätigungscode erneut senden“ .

html:

<div v-bind:class="{ 'text_email': isActive, 'text_tip': isTip }">{{tip}}</div> //Fehlermeldung<div class="input">
    <i class="ret_icon-email"></i>
    <Eingabe 
      Typ="Text" 
      v-model="E-Mail" 
      v-bind:class="{ 'input_email0' : hatFehler }" 
      v-on:click="Fehler abbrechen" 
      :placeholder="Geben Sie Ihre E-Mail-Adresse ein" 
      id="EingabeE-Mail"
    />
    <br />
    <input type="text" placeholder="Bestätigungscode eingeben" class="input_number" />
    <button class="btn_number" v-bind:class="{gray:wait_timer>0}" @click="getCode()">
        <span 
          Klasse="num_green" 
          v-show="Anzeigennummer" 
          v-bind:class="{num:wait_timer>0}"
        >{{this.wait_timer + "s"}}</span>
        <span 
          Klasse="Spannweite_Nummer" 
          v-bind:Klasse="{gray_span:wait_timer>0}"
        >{{ getCodeText() }}</span>
    </button>
    <br />
</div>

javascript - Argumente:

Daten() {
    zurückkehren {
      Tipp: "Passwort per E-Mail anfordern",
      isTip: false,
      istAktiv: wahr,
      showNum: false,
      wait_timer: falsch,
      hatFehler: falsch,
      E-Mail: ""
    }
},
Methoden: {
    Fehler abbrechen: Funktion (Ereignis) {
      dies.hasError = falsch;
      dies.istActive = wahr;
      dies.isTip = falsch;
      this.tip = "Passwort per E-Mail abrufen";
    },
    getCode: Funktion() {
      wenn (dieser.wait_timer > 0) {
        gibt false zurück;
      }
      wenn (!diese.email) {
        dies.hasError = wahr;
        dies.isActive = falsch;
        dies.istTip = wahr;
        this.tip = "E-Mail darf nicht leer sein";
        gibt false zurück;
      }
      Wenn (
        !/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(
          diese.email
        )
      ) {
        dies.hasError = wahr;
        dies.isActive = falsch;
        dies.istTip = wahr;
        this.tip = "E-Mail-Adresse ist ungültig";
        gibt false zurück;
      }
      dies.showNum = wahr;
      dies.wait_timer = 120;
      var das = dies;
      var Timerintervall = Intervall festlegen(Funktion() {
        wenn (das.wait_timer > 0) {
          das.wait_timer--;
        } anders {
          Intervall löschen(Timerintervall);
        }
      }, 1000);

      //Rufen Sie hier Ajax auf, um den Bestätigungscode zu erhalten
    },
    getCodeText: Funktion() {
      wenn (dieser.wait_timer > 0) {
        Rückgabe "Gesendet";
      }
      wenn (this.wait_timer === 0) {
        dies.showNum = falsch;
        return "Bestätigungscode erneut senden!";
      }
      wenn (this.wait_timer === false) {
        return "Bestätigungscode senden!";
      }
    },
}

CSS:

.ret_icon-email {
  Hintergrund: URL (../../assets/pics/email.svg) keine Wiederholung; //Das Bild ist ein lokales Bild, Breite: 20px;
  Höhe: 20px;
  Position: absolut;
  oben: 12px;
  links: 16px;
}
.input_email0 {
  Rand: 1px durchgezogen rgba(239, 83, 80, 1);
}
.Eingabenummer {
  Breite: 112px;
  Höhe: 44px;
  Texteinzug: 16px;
  Rand rechts: 12px;
}
.btn_Nummer {
  Breite: 154px;
  Höhe: 44px;
  Rahmenradius: 4px;
  Box-Größe: Rahmenbox;
  Rand: 1px durchgezogen rgba(76, 175, 80, 1);
  Zeilenhöhe: 16px;
  Gliederung: keine;
}
.span_nummer {
  Farbe: rgba (76, 175, 80, 1);
}
.btn_nummer.grau {
  Hintergrund: rgba(242, 244, 245, 1);
  Rand: 1px durchgezogen rgba(0, 0, 0, 0,05);
}
.span_number.grau_span {
  Farbe: #9a9c9a;
}
.num_grün.num {
  Farbe: rgba (76, 175, 80, 1);
}

Effektbild:

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.

Das könnte Sie auch interessieren:
  • Vue implementiert die Anmeldung per Mobiltelefonnummer und Bestätigungscode (60-Sekunden-Countdown deaktiviert)
  • Implementierung einer 60-Sekunden-Countdown-Funktion des Bildverifizierungscodes basierend auf Vue
  • Vue implementiert einen Countdown, um den Bestätigungscode-Effekt zu erzielen
  • Vue erhält die Countdown-Komponente für den Bestätigungscode
  • Vue-Verifizierungscode 60-Sekunden-Countdown-Funktion einfacher Beispielcode
  • Vue implementiert die Countdown-Funktion der Bestätigungscode-Schaltfläche
  • Einfache Implementierung der 60-Sekunden-Countdown-Funktion des Vue-Verifizierungscodes
  • SMS-Bestätigungscode-Countdown-Demo basierend auf Vue
  • Vue schreibt eine einfache Countdown-Button-Funktion

<<:  Lösen Sie das MySQL-Login-1045-Problem unter CentOS

>>:  Detaillierte Erläuterung des Vorgangs zum Löschen der integrierten Version von Python in Linux

Artikel empfehlen

So verwenden Sie die Verlaufsumleitung in React Router

In react-router kann der Sprung in der Komponente...

Mysql-Lösung zur Verbesserung der Effizienz beim Kopieren großer Datentabellen

Vorwort Dieser Artikel stellt hauptsächlich den r...

MySQL 8.0-Installationstutorial unter Linux

Dieser Artikel beschreibt Ihnen, wie Sie MySQL 8....

Tutorial zur Verwendung des Hyperlink-Tags in HTML

Die verschiedenen HTML-Dokumente der Website sind...

Mybatis-Statistiken zur Ausführungszeit jeder SQL-Anweisung

Hintergrund In letzter Zeit werde ich in Intervie...

So verwenden Sie JS zum Parsen des Excel-Inhalts in der Zwischenablage

Inhaltsverzeichnis Vorwort 1. Ereignisse und Zwis...

Konfigurationsschritte für die MySQL-Gruppenreplikation (empfohlen)

MySQL-Group-Replication ist eine neue Funktion, d...

So ändern Sie das Standardnetzwerksegment der Docker0-Brücke in Docker

1. Hintergrund Wenn der Docker-Dienst gestartet w...

Lösen Sie das MySQL-Login-1045-Problem unter CentOS

Da die gesamte Anwendung unter CentOS bereitgeste...

Über Generika der C++ TpeScript-Reihe

Inhaltsverzeichnis 1. Vorlage 2. Generika 3. Gene...

Nginx-Anti-Crawler-Strategie, um UA am Crawlen von Websites zu hindern

Anti-Crawler-Richtliniendatei hinzugefügt: vim /u...

Prinzipielle Beispiele für die vier Netzwerktypen von Docker

Vier Netzwerktypen: Keine: Konfigurieren Sie kein...

So stellen Sie Ihre erste Anwendung mit Docker bereit

Im vorherigen Artikel haben Sie Docker Desktop in...