この記事では、IP入力ボックスを実装するための react+antd.3x の具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 現れ方は次のとおりです。 js+html /** * 2021 10 26 日曜日 * 仮想サブネットの作成と変更に使用される IP 入力ボックス * 使用法: antd-form カスタム フォーム コントロールを参照してください。 */ 'react' から React をインポートします。 'antd' から { Input} をインポートします。 './index.less' からスタイルをインポートします クラスIpInputはReact.Componentを拡張します{ コンストラクタ(){ 素晴らしい(); this._refs = { refip_0: React.createRef()、 refip_1: React.createRef()、 refip_2: React.createRef()、 refip_3: React.createRef() }; } ハンドル番号変更 = (e,type) => { // 最小値が 0 であることを確認します。 定数数値 = parseInt(e.target.value || 0, 10); if (isNaN(数値)) { 戻る; } オブジェクトを{}とします Obj[`${type}`] = 数値 このトリガーの変更(Obj); }; トリガー変更 = 変更された値 => { const { onChange, 値 } = this.props; 変更があった場合 変更後({ ...価値、 ...変更された値、 }); } }; turnIpPOS = (e,type)=>{ 自分自身 = this とします。 //左矢印は左にジャンプし、何もしません if(e.keyCode === 37) { if(type === 0) {} else { self._refs[`refip_${type-1}`].current.focus(); } } //右矢印、Enter キー、スペースバー、コロンはすべて右にジャンプし、右のものは何もしません if(e.keyCode === 39 || e.keyCode === 13 || e.keyCode === 32 || e.keyCode === 190) { if(type === 3) {} else { self._refs[`refip_${type+1}`].current.focus(); } } } 与える(){ const { 値 } = this.props; 戻る ( <Input.Group コンパクト クラス名 = {styles.inputGroup}> <Input style={{ width: '24%' }} className = {styles.self_input} ref = {this._refs.refip_0} value = {value.ip_0} maxLength = {3} onChange={(e)=>{this.handleNumberChange(e,'ip_0')}} onKeyUp ={(e)=>this.turnIpPOS(e,0)}/> <span className = {styles.dot} ></span> <Input style={{ width: '24%' }} className = {styles.self_input} ref = {this._refs.refip_1} value = {value.ip_1} maxLength = {3} onChange={(e)=>{this.handleNumberChange(e,'ip_1')}} onKeyUp ={(e)=>this.turnIpPOS(e,1)}/> <span className = {styles.dot}></span> <Input style={{ width: '24%' }} className = {styles.self_input} ref = {this._refs.refip_2} value = {value.ip_2} maxLength = {3} onChange={(e)=>{this.handleNumberChange(e,'ip_2')}} onKeyUp ={(e)=>this.turnIpPOS(e,2)}/> <span className = {styles.dot}></span> <Input style={{ width: '24%' }} className = {styles.self_input} ref = {this._refs.refip_3} value = {value.ip_3} maxLength = {3} onChange={(e)=>{this.handleNumberChange(e,'ip_3')}} onKeyUp ={(e)=>this.turnIpPOS(e,3)}/> </Input.Group> ) } } デフォルトの IpInput をエクスポートします。 CS .inputGroup{ 境界線: 1px 実線 #d9d9d9; 境界線の半径: 2px; 遷移: すべて 0.3 秒; &:ホバー{ 境界線の色: #45bbff; 右境界線の幅: 1px !重要; アウトライン: 0; ボックスシャドウ: 0 0 0 2px rgba(29, 165, 255, 0.2); } テキスト配置: 中央; .dot { 幅: 3px; 高さ: 3px; 境界線: 1px実線 #000; 境界線の半径: 3px; 背景色: #000; 不透明度: 0.5; zインデックス: 9; 位置: 相対的; 上: 21px; } } .self_input { 境界線: なし; アウトライン: 0px; &:ホバー{ ボックスシャドウ: なし; } &::選択{ ボックスシャドウ: なし; } &:集中 { ボックスシャドウ: なし; } } 使い方 '../../public/IpInput' から IPInput をインポートします。 <FormItem label="サブネット ゲートウェイ" {...formItemLayout}> {getFieldDecorator('価格', { 初期値: { ip_0: 255, ip_1: 235, ip_2: 255, ip_3: 255 }, ルール: [{ バリデータ: this.checkIp }], })(<IPInput />)} </フォーム項目> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: HTML Webページ作成チュートリアル iframeタグを慎重に使用してください
>>: MySQL テーブルにはどのくらいの量のデータを保存できますか?
ネットワーク セキュリティは非常に重要なトピックであり、サーバーはネットワーク セキュリティにおける...
最近、サーバーのストレステストを再度行う必要が出てきました。ここでは、最近学んだ見積もりスキームと見...
SQL Server のバッチコメントバッチ注釈Ctrl + (K, C): Ctrlキーを押しなが...
Compose のいくつかの部分は、何らかの方法で環境変数を扱います。このチュートリアルは、必要な情...
MacにはApache環境が付属していますターミナルを開き、sudo apachectl -v と入...
目次1. 使用2. メッセージポップアップウィンドウが繰り返し表示される問題を解決する1. 使用Vu...
目次0. 背景1. インストール2. Baidu Cloudアカウントにログインする3. ファイルを...
MySQL でグループ化した後、各グループの最大値を取得する詳細な例1. テストデータベーステーブル...
目次1. ES 構文のゲッターとセッター2. ES構文でのdefineProperty 3. Vue...
目次1. 環境整備1.1 オペレーティング システムのバージョン1.2 ディスク容量1.3 ファイア...
最近の Web サイトでは Https をサポートすることがほぼ標準機能となっており、Nginx は...
私は W3school のチュートリアルに従いました。チュートリアルはとても良いと思います。各セクシ...
<br />前回のWebデザインチュートリアル:Webデザインチュートリアル(3):デザ...
HTML 検証はHTML 検証を指します。これは、HTML ドキュメントを分析し、標準の HTML ...
会社のビジネスシナリオでは、WeChat アカウント分割機能を使用する必要があります。公式 Web ...