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

Eine kurze Einführung in den MySQL-Dialekt

Wenn wir einmal von Datenbanken absehen, was ist ...

Util-Modul im node.js-Tutorial-Beispiel – detaillierte Erklärung

Inhaltsverzeichnis Ausgehend von der Typbeurteilu...

Beispielcode zur Implementierung eines zufälligen Roll Callers in HTML

Nachdem dieses Namensaufrufgerät mit dem Aufruf d...

So konfigurieren Sie eine JDK-Umgebung unter Linux

1. Gehen Sie zur offiziellen Website, um das JDK-...

Lösung für die Upload-Einschränkung von Element-ui-Uploaddateien

Frage Die Angabe des Typs der hochgeladenen Datei...

Detaillierte Erklärung der Whitelist-Regeln von nginx-naxsi

Syntax der Whitelist-Regel: Grundregel wl:ID [neg...

Detaillierter Vue-Code zur Implementierung der Shuttle-Box-Funktion

Vue - Implementierung der Shuttle-Box-Funktion. D...

HTML löst das Problem ungültiger Tabellenbreiteneinstellungen

Wenn Sie den Stil „table-layer:fixed“ für eine Ta...

Detaillierte Erklärung der CSS-Zeilenhöhe und -Höhe

Als ich kürzlich an CSS-Schnittstellen arbeitete,...