react+antd.3x implementiert IP-Eingabefeld

react+antd.3x implementiert IP-Eingabefeld

In diesem Artikel wird der spezifische Code von react+antd.3x zur Implementierung des IP-Eingabefelds zu Ihrer Information freigegeben. Der spezifische Inhalt ist wie folgt

Die Erscheinungsform ist wie folgt:

js + html

/**
 * zks 2021 10 26
 * IP-Eingabefeld zum Erstellen und Ändern virtueller Subnetze * Verwendung: Siehe benutzerdefinierte Formularsteuerelemente von antd-form.
 */
importiere React von „react“;
importiere { Input} von 'antd';
Stile aus „./index.less“ importieren
Klasse IpInput erweitert React.Component{
    Konstruktor(){
        super();
        diese._refs = {
          refip_0: React.createRef(),
          refip_1: React.createRef(),
          refip_2: React.createRef(),
          refip_3: React.createRef()
        };
    }
    handleNumberChange = (e,Typ) => {
        // Stellen Sie sicher, dass der Mindestwert 0 ist.
        const number = parseInt(e.target.value || 0, 10);
        wenn (istNaN(Zahl)) {
          zurückkehren;
        }
        lass Obj = {}
        Obj[`${type}`] = Zahl
        dies.triggerChange(Obj);
    };
    Triggeränderung = geänderterWert => {
        const { bei Änderung, Wert } = this.props;
        wenn (beiÄnderung) {
          beiÄnderung({
            ...Wert,
            ...geänderterWert,
          });
        }
      };
    turnIpPOS = (e,Typ)=>{
        lass self = dies;
         //Der linke Pfeil springt nach links und tut nichts if(e.keyCode === 37) {
          wenn(Typ === 0) {} sonst {
            self._refs[`refip_${type-1}`].current.focus();
          }
        }
        //Der rechte Pfeil, die Eingabetaste, die Leertaste und der Doppelpunkt springen alle nach rechts und der rechte tut nichts, wenn (e.keyCode === 39 || e.keyCode === 13 || e.keyCode === 32 || e.keyCode === 190) {
           wenn(Typ === 3) {} sonst {
            self._refs[`refip_${type+1}`].current.focus();
           }
        }
    }
    machen(){
        const { Wert } = this.props;
        zurückkehren (
            <Input.Group kompakter Klassenname = {styles.inputGroup}>
              <Eingabestil = {{ Breite: '24 %' }} Klassenname = {Stile.self_input} Ref = {this._refs.refip_0} Wert = {Wert.ip_0} Maximallänge = {3} Bei Änderung = {(e) => {this.handleNumberChange(e,'ip_0')}} Bei Schlüsselerhöhung = {(e) =>this.turnIpPOS(e,0)}/>
              <span className = {styles.dot} ></span>
              <Eingabestil = {{ Breite: '24 %' }} Klassenname = {Stile.self_input} Ref = {this._refs.refip_1} Wert = {Wert.ip_1} Maximallänge = {3} Bei Änderung = {(e) => {this.handleNumberChange(e,'ip_1')}} Bei Tastendruck = {(e) =>this.turnIpPOS(e,1)}/>
              <span Klassenname = {styles.dot}></span>
              <Eingabestil = {{ Breite: '24 %' }} Klassenname = {Stile.self_input} Ref = {this._refs.refip_2} Wert = {Wert.ip_2} Maximallänge = {3} Bei Änderung = {(e) => {this.handleNumberChange(e,'ip_2')}} Bei Tastendruck = {(e) =>this.turnIpPOS(e,2)}/>
              <span Klassenname = {styles.dot}></span>
              <Eingabestil = {{ Breite: '24 %' }} Klassenname = {Stile.self_input} Ref = {this._refs.refip_3} Wert = {Wert.ip_3} Maximallänge = {3} Bei Änderung = {(e) => {this.handleNumberChange(e,'ip_3')}} Bei Tastendruck = {(e) =>this.turnIpPOS(e,3)}/>
            </Eingabe.Gruppe>
        )
    }
   
}
Standard-IpInput exportieren;

CSS

.Eingabegruppe {
  Rand: 1px durchgezogen #d9d9d9;
  Rahmenradius: 2px;
  Übergang: alle 0,3 s;
  &:schweben {
    Rahmenfarbe: #45bbff;
    Rahmenbreite rechts: 1px !wichtig;
    Umriss: 0;
    Kastenschatten: 0 0 0 2px rgba (29, 165, 255, 0,2);
  }
  Textausrichtung: zentriert;
  .punkt {
    Breite: 3px;
    Höhe: 3px;
    Rand: 1px durchgezogen #000;
    Rahmenradius: 3px;
    Hintergrundfarbe: #000;
    Deckkraft: 0,5;
    Z-Index: 9;
    Position: relativ;
    oben: 21px;
  }
}
.self_input {
  Rand: keiner;
  Umriss: 0px;
  &:schweben {
    Kastenschatten: keiner;
  }
  &::Auswahl {
    Kastenschatten: keiner;
  }
  &:Fokus {
    Kastenschatten: keiner;
  }
}

Anwendung

IPInput importieren aus '../../public/IpInput';
<FormItem label="Subnetz-Gateway" {...formItemLayout}>
                {getFieldDecorator('Preis', {
                  Anfangswert: { ip_0: 255, ip_1: 235, ip_2: 255, ip_3: 255 },
                  Regeln: [{ validator: this.checkIp }],
                })(<IPInput />)}
 </FormItem>

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:
  • React-Beispiel zum Abrufen des Werts aus dem Eingabefeld
  • Lösen Sie das Problem, dass die React-Native-Softtastatur auftaucht und das Eingabefeld blockiert
  • So lösen Sie das Problem, dass das Eingabefeld in React Android durch die mobile Tastatur blockiert wird
  • React-Native erstellt Implementierungscode für eine Texteingabefeldkomponente

<<:  Tutorial zum Erstellen einer HTML-Webseite. Verwenden Sie Iframe-Tags mit Bedacht.

>>:  Wie viele Daten können in einer MySQL-Tabelle gespeichert werden?

Artikel empfehlen

Erfahrungsaustausch durch einen Frontend-Supervisor mit 7 Jahren Praxiserfahrung

Heute teile ich die wertvollen Erfahrungen eines ...

Detaillierte Erläuterung der langsamen MySQL-Protokollabfrage

Langsame Protokollabfragefunktion Die Hauptfunkti...

Verwenden Sie reines CSS, um einen Switch-Effekt zu erzielen

Zuerst ist die Idee Um diesen Effekt zu erzielen,...

Detaillierte Erläuterung der persistenten MySQL-Statistiken

1. Die Bedeutung persistenter statistischer Infor...

Warum MySQL das Löschen von Daten nicht empfiehlt

Inhaltsverzeichnis Vorwort InnoDB-Speicherarchite...

Docker konfiguriert den Speicherort lokaler Images und Container

Verwenden Sie den Befehl „Find“, um Dateien zu fi...

Handbuch zur MySQL-Volltextindizierung

Die Volltextindizierung erfordert eine spezielle ...

Wissen zur Suchmaschinenoptimierung, auf das Sie beim Webdesign achten sollten

1. Linklayout der neuen Site-Startseite 1. Die Pos...

So installieren Sie Oracle Java 14 auf Ubuntu Linux

Vor Kurzem hat Oracle die öffentliche Verfügbarke...

Detaillierter Prozess der Installation von Logstash in Docker

Bearbeiten Sie docker-compose.yml und fügen Sie d...

Detailliertes Tutorial zum Ausführen mehrerer Springboot mit Docker

Docker führt mehrere Springboot Erstens: Port-Map...

Detaillierte Erklärung der Überwachungseigenschaften von Vue

Inhaltsverzeichnis Vue-Monitoreigenschaften Was i...

Anweisungen zur Verwendung der Option --rm von Docker Run

Wenn der Docker-Container beendet wird, bleibt da...