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:
|
<<: Tutorial zum Erstellen einer HTML-Webseite. Verwenden Sie Iframe-Tags mit Bedacht.
>>: Wie viele Daten können in einer MySQL-Tabelle gespeichert werden?
Installationseinführung unter Windows: Schauen Si...
A. Installation des MySQL-Sicherungstools xtrabac...
Beispielsweise Benutzer, die eine Bildschirmleseso...
MySQL 8.0.13 verfügt standardmäßig über einen Dat...
Als ich heute ein kleines Programm schrieb, benut...
Zusammenfassung: Im Folgenden finden Sie eine Met...
Überblick In einer relationalen Datenbank ist ein...
Schauen Sie sich zunächst das Wirkungsdiagramm an...
In diesem Artikel wird das Implementierungszeugni...
So erhalten Sie SQL-Anweisungen mit Leistungsprob...
Inhaltsverzeichnis Text LOCK-Parameter ALGORITHMU...
Inhaltsverzeichnis Schritt 1. Konfigurieren Sie R...
Voraussetzungen Git muss installiert werden Insta...
Inhaltsverzeichnis 1. Docker-Installation auf dem...
1. Über den Dateiserver Wenn Sie in einem Projekt...