react+antd.3x implements ip input box

react+antd.3x implements ip input box

This article shares the specific code of react+antd.3x to implement the ip input box for your reference. The specific content is as follows

The manifestation is as follows:

js+html

/**
 * zks 2021 10 26
 * IP input box, used to create and modify virtual subnets * Usage: See antd-form custom form controls.
 */
import React from 'react';
import { Input} from 'antd';
import styles from './index.less'
class IpInput extends React.Component{
    constructor(){
        super();
        this._refs = {
          refip_0: React.createRef(),
          refip_1: React.createRef(),
          refip_2: React.createRef(),
          refip_3: React.createRef()
        };
    }
    handleNumberChange = (e,type) => {
        // Ensure the minimum value is 0;
        const number = parseInt(e.target.value || 0, 10);
        if (isNaN(number)) {
          return;
        }
        let Obj = {}
        Obj[`${type}`] = number
        this.triggerChange(Obj);
    };
    triggerChange = changedValue => {
        const { onChange, value } = this.props;
        if (onChange) {
          onChange({
            ...value,
            ...changedValue,
          });
        }
      };
    turnIpPOS = (e,type)=>{
        let self = this;
         //Left arrow jumps to the left, and does nothing if(e.keyCode === 37) {
          if(type === 0) {} else {
            self._refs[`refip_${type-1}`].current.focus();
          }
        }
        //The right arrow, enter key, space bar, and colon all jump to the right, and the right one does nothing if(e.keyCode === 39 || e.keyCode === 13 || e.keyCode === 32 || e.keyCode === 190) {
           if(type === 3) {} else {
            self._refs[`refip_${type+1}`].current.focus();
           }
        }
    }
    render(){
        const { value } = this.props;
        return (
            <Input.Group compact className = {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>
        )
    }
   
}
export default IpInput;

CSS

.inputGroup {
  border: 1px solid #d9d9d9;
  border-radius: 2px;
  transition: all 0.3s;
  &:hover {
    border-color: #45bbff;
    border-right-width: 1px !important;
    outline: 0;
    box-shadow: 0 0 0 2px rgba(29, 165, 255, 0.2);
  }
  text-align: center;
  .dot {
    width: 3px;
    height: 3px;
    border: 1px solid #000;
    border-radius: 3px;
    background-color: #000;
    opacity: 0.5;
    z-index: 9;
    position: relative;
    top: 21px;
  }
}
.self_input {
  border: none;
  outline: 0px;
  &:hover {
    box-shadow: none;
  }
  &::selection {
    box-shadow: none;
  }
  &:focus {
    box-shadow: none;
  }
}

How to use

import IPInput from '../../public/IpInput';
<FormItem label="Subnet Gateway" {...formItemLayout}>
                {getFieldDecorator('price', {
                  initialValue: { ip_0: 255, ip_1: 235, ip_2: 255, ip_3: 255 },
                  rules: [{ validator: this.checkIp }],
                })(<IPInput />)}
 </FormItem>

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • React example of how to get the value of the input box
  • Solve the problem of react-native soft keyboard popping up and blocking the input box
  • How to solve the problem of input box being blocked by mobile keyboard in react android
  • React-Native makes a text input box component implementation code

<<:  HTML web page creation tutorial Use iframe tags carefully

>>:  How much data can be stored in a MySQL table?

Recommend

Method for realizing Internet interconnection by VMware virtual machine bridging

After installing VMware and creating a new virtua...

How to use CURRENT_TIMESTAMP in MySQL

Table of contents Use of CURRENT_TIMESTAMP timest...

How to view the creation time of files in Linux

1. Introduction Whether the creation time of a fi...

Nginx+FastDFS to build an image server

Installation Environment Centos Environment Depen...

How to create a view on multiple tables in MySQL

In MySQL, create a view on two or more base table...

Steps to deploy Docker project in IDEA

Now most projects have begun to be deployed on Do...

Summarize several common ranking problems in MySQL

Preface: In some application scenarios, we often ...

Implement a simple search engine based on MySQL

Table of contents Implementing a search engine ba...

How to deploy springcloud project with Docker

Table of contents Docker image download Start mys...

About the pitfall record of Vue3 transition animation

Table of contents background Problem location Fur...

Detailed explanation of the interaction between React Native and IOS

Table of contents Prerequisites RN passes value t...

Example of how to set automatic creation time and modification time in mysql

This article describes how to set the automatic c...

mysql5.7 remote access settings

Setting up remote access in mysql5.7 is not like ...