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

Vuex implementiert einfache Warenkorbfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Einige Fallstricke beim JavaScript Deep Copy

Vorwort Als ich zuvor zu einem Vorstellungsgesprä...

MySQL-Datenbankgrundlagen - Prinzip der Join-Operation

Join verwendet den Nested-Loop-Join-Algorithmus. ...

Eine kurze Analyse der MySQL PHP-Syntax

Schauen wir uns zunächst die grundlegende Syntax ...

Lösen Sie das Problem der Docker-Protokollmontage

Der Schlüssel ist, dass der lokale Server keine S...

Lösen Sie das Problem verschwindender Docker-Images

1. Spiegelbilder verschwinden in 50 und 93 [root@...

Welcher Befehl eignet sich besser für die unscharfe Suche nach Dateien in Linux?

1. Einleitung In diesem Artikel wird hauptsächlic...

Eclipse konfiguriert Tomcat und Tomcat hat eine ungültige Port-Lösung

Inhaltsverzeichnis 1. Eclipse konfiguriert Tomcat...