Vue.js-Textfeld mit Dropdown-Komponente

Vue.js-Textfeld mit Dropdown-Komponente

Ein Textfeld mit Dropdown-Liste ermöglicht es Benutzern, eine Eingabe aus einer Dropdown-Liste auszuwählen oder den Eingabewert frei einzugeben. Dies ist ein relativ häufiges UI-Element. Es kann Benutzern alternative Optionen zur Einsparung von Betriebszeit bieten und auch Anpassungsmöglichkeiten für mögliche Minderheitssituationen bereitstellen.

Ursprünglich dachte ich, dass diese Komponente recht häufig vorkommt und es viele vorgefertigte Beispiele geben sollte, die direkt angewendet werden können. Nach einigem Suchen stellte ich jedoch fest, dass viele ähnliche Komponenten zu viele Funktionen haben, wie z. B. Suche, Mehrfachauswahl usw. (Kurz gesagt: zu kompliziert!). Also dachte ich, ich sollte selbst eine einfache und benutzerfreundliche Anleitung schreiben. Ich möchte Herrn Fei für seine großartige Hilfe danken, als ich verwirrt war.

Dieses UI-Element wird in der Common Bar Width App verwendet.

Registrieren von Komponenten

Registrieren Sie die globale Komponente, indem Sie den gekapselten Komponentencode kopieren und einfügen.

Bei der Gestaltung wurde berücksichtigt, dass es unterschiedliche Arten von Eingabefeldern geben kann, beispielsweise Text-Eingabefelder, numerische Eingabefelder, Prozent-Eingabefelder usw. Daher wird die Funktion inputRule verwendet, um die Eingabe im gekapselten Code einzuschränken. Die einschränkende Methode besteht darin, zum Filtern Regex zu verwenden. Wenn andere Typen vorhanden sind, können Sie die Filterbedingungen auch in inputRule ändern.

<script Typ="text/x-template" id="dropdown">
    <div Klasse="Dropdown" v-if="Optionen">
        <!-- Dropdown-Eingabe -->
        <Eingabe: Typ = "Typ"
                :deaktiviert="deaktiviert"
                v-model="Eingabewert"
                @focus="Optionen anzeigen()"
                @blur="Beenden()"
                @keyup="Schlüsselmonitor"
                @input="Eingabewert = Eingaberegel(Typ)" />
...
</Skript>
<Skript>
    Vue.component('Dropdown', {
        Vorlage: '#dropdown',
        Requisiten: {
            Typ: Zeichenfolge,
            Optionen: Array,
            deaktiviert: Boolean,
            Wert: Zeichenfolge
        },
...
        Methoden: {
            Eingaberegel:Funktion(Typ){
                var-Wert;
                Schalter(Typ){
                    Fall 'Text':
                        Wert = dieser.Eingabewert.Ersetzen(/[^a-zA-Z0-9]/g,'');
                        brechen;
                    Fall 'Nummer':
                        Wert = dieser.Eingabewert.Ersetzen(/^(?![+-]?\d+(\.\d+)?$)/g,'');
                        brechen;
                    Fall 'Prozentsatz':
                        Wert = this.input_value.replace(/[^\d]/g,'');
                        Wert = Wert > 100? „100“: Wert;
                        Wert = Wert < 0? „0“: Wert;
                        brechen;
                    Standard:
                        console.log("keine Einschränkung");
                }
                Rückgabewert;
            },
...
</Skript>

Aufrufende Komponenten

Fügen Sie eine benutzerdefinierte Label-Aufrufkomponente hinzu.

<Dropdown-Typ = "Text"
            :Optionen = "Textoptionen" 
            :Wert = "Textwert"
            :deaktiviert = "Text_deaktiviert" 
            @on_change_input_value = "beiTextänderung">
</dropdown>

Übergeben von Daten

Binden Sie die Daten abschließend dynamisch an die übergeordnete Komponente in Props:

  • Typ: Der Typ des Eingabefelds, unterstützt derzeit Text, Zahlen und Prozentsätze.
  • Optionen: Optionen für die Dropdown-Liste des Eingabefelds
  • Wert: der Wert des Eingabefeldes
  • deaktiviert: Gibt an, ob das Klicken auf das Eingabefeld verboten werden soll

Darüber hinaus müssen wir auch Dinge in der übergeordneten Instanz definieren, um den Wert des Eingabefelds zu aktualisieren

on_change_input_value: Wert aktualisieren

Daten: Funktion () {
    zurückkehren {
        Textwert: "ccc",
        text_disabled: falsch,
        Textoptionen: [
            { ID: 1, Name: "a" },
            { ID: 2, Name: 'bb' },
            { ID: 3, Name: "ccc" },
            { ID: 4, Name: "dddd" },
            { ID: 5, Name: "eeeee" },
            { ID: 6, Name: "fffff " },
            { ID: 7, Name: "gggggg" },
            { id: 8, name: 'hhhhhhh' },
            { id: 9, name: "iiiiiiii" },
        ],
        ...
    }
},
...
Methoden: {
    beiTextänderung: Funktion (neuer_Textwert) {
        dieser.Textwert = neuer_Textwert;
    },
...
},

Quellcode

GitHub

Dies ist das Ende dieses Artikels über die Vue.js-Textbox mit Dropdown-Komponente. Weitere Informationen zur Vue.js-Textbox mit Dropdown-Komponente finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung zur Verwendung der digitalen Eingabefeldkomponente von Vue.js
  • JS imitiert das Beispiel einer Komponente zur Vergrößerung des Alipay-Eingabetexteingabefelds
  • Entwicklung von JavaScript-Komponenten: Eingabefeld plus Kandidatenfeld
  • JS verwendet reguläre Ausdrücke, um das Eingabefeld so einzuschränken, dass nur Ganzzahlen und Dezimalzahlen (Beträge oder Bargeld) mit zwei Dezimalstellen zulässig sind
  • js und jquery Echtzeitüberwachung des Eingabefeldwerts Oninput- und Onpropertychange-Methoden
  • js überwacht die sofortigen Änderungen der Eingabefeldwerte bei Eigenschaftsänderung, bei Eingabe
  • JS implementiert die Methode zum Einblenden eines Eingabefelds auf der Webseite
  • js ändert dynamisch das Typattribut des Eingabefelds (Analyse der Implementierungsmethode)
  • js überwacht die Echtzeitänderungen des Eingabefeldwerts
  • JavaScript implementiert eine Eingabefeldkomponente

<<:  Konfigurationsmethode für die Serverzeitsynchronisierung von Centos 7.4 [basierend auf dem NTP-Dienst]

>>:  Tiefgreifendes Verständnis der Matching-Logik von Server und Standort in Nginx

Artikel empfehlen

Standard-CSS-Stil der XHTML-Sprache

html,Adresse, Blockzitat, Körper, dd, div, dl,dt,...

Detailliertes Installations- und Deinstallationstutorial für MySQL 8.0.12

1. Installationsschritte für MySQL-Version 8.0.12...

CentOS 7: Erläuterung zum Wechseln des Boot-Kernels und des Boot-Modus

Centos7-Switch-Boot-Kernel Hinweis: Bei Bedarf wi...

Zusammenfassung der Verwendung von MySQL Online DDL gh-ost

Hintergrund: Als DBA werden die meisten DDL-Änder...

Docker-Installations- und Konfigurationsschritte für MySQL

Inhaltsverzeichnis Vorwort Umfeld Installieren Er...

Installieren Sie Docker unter CentOS 7

Wenn Sie kein Linux-System haben, finden Sie unte...

Eine kurze Diskussion zur Logikextraktion und Feldanzeige von Vue3 in Projekten

Inhaltsverzeichnis Logische Schichtung Trennen Si...

18 Web-Usability-Prinzipien, die Sie kennen müssen

Sie können über die besten visuellen Designfähigk...

jQuery verwendet das Canvas-Tag, um den Bestätigungscode zu zeichnen

Das <canvas>-Element ist für clientseitige ...

Schritte und Methoden zur Bindung von Domänennamen und IPs in der Alibaba Cloud

1 Rufen Sie die Alibaba Cloud-Konsole auf, suchen...

Detaillierte Erklärung der Listendarstellung von Vue

Inhaltsverzeichnis 1. v-for: Array-Inhalte durchl...