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

Detailed steps to change the default password when installing MySQL in Ubuntu

Step 1: Enter the directory: cd /etc/mysql, view ...

Tutorial on deploying the open source project Tcloud with Docker on CentOS8

1. Install Docker 1. I installed Centos7 in the v...

MySql sharing of null function usage

Functions about null in MySql IFNULL ISNULL NULLI...

Detailed explanation of mysql.user user table in Mysql

MySQL is a multi-user managed database that can a...

MySQL slow query: Enable slow query

1. What is the use of slow query? It can record a...

Font references and transition effects outside the system

Copy code The code is as follows: <span style=...

How to completely delete the MySQL 8.0 service under Linux

Before reading this article, it is best to have a...

Use of Linux cal command

1. Command Introduction The cal (calendar) comman...

40 CSS/JS style and functional technical processing

1- Styling dropdown select boxes - Modify the dro...

JavaScript array merging case study

Method 1: var a = [1,2,3]; var b=[4,5] a = a.conc...

The difference between char and varchar in MYSQL

CHAR and VARCHAR types are similar, differing pri...

A simple example of creating a thin line table in html

Regarding how to create this thin-line table, a s...

Linux platform mysql enable remote login

During the development process, I often encounter...