Reactjs - Form input validation

前端 未结 9 1956
悲哀的现实
悲哀的现实 2020-11-28 20:04

My Contact page form is as follows,

<
9条回答
  •  -上瘾入骨i
    2020-11-28 20:58

    import React from 'react';
    import {sendFormData} from '../services/';
    
    class Signup extends React.Component{
      constructor(props){
        super(props);
         this.state = {
           isDisabled:true
         }                                                                                                 
         this.submitForm = this.submitForm.bind(this);
      }
      validateEmail(email){
       const pattern = /[a-zA-Z0-9]+[\.]?([a-zA-Z0-9]+)?[\@][a-z]{3,9}[\.][a-z]{2,5}/g;
       const result = pattern.test(email);
       if(result===true){
         this.setState({
           emailError:false,
           email:email
         })
       } else{
         this.setState({
           emailError:true
         })
       }
     }
     handleChange(e){
      const target = e.target;
      const value = target.type === 'checkbox' ? target.checked : target.value;
      const name = target.name;
      this.setState({
        [name]: value
      });
      if(e.target.name==='firstname'){
        if(e.target.value==='' || e.target.value===null ){
          this.setState({
            firstnameError:true
          })
        } else {
          this.setState({
            firstnameError:false,     
            firstName:e.target.value
          })
        }
      }
      if(e.target.name==='lastname'){
        if(e.target.value==='' || e.target.value===null){
          this.setState({
            lastnameError:true
          })
        } else {
          this.setState({
            lastnameError:false,
            lastName:e.target.value
          })
        }
      }
      if(e.target.name==='email'){
       this.validateEmail(e.target.value);
      }
      if(e.target.name==='password'){
        if(e.target.value==='' || e.target.value===null){
          this.setState({
            passwordError:true
          })
        } else {
          this.setState({
            passwordError:false,
            password:e.target.value
          })
        }
     }
     if(this.state.firstnameError===false && this.state.lastnameError===false && 
      this.state.emailError===false && this.state.passwordError===false){
        this.setState({
          isDisabled:false
        })
     }
    }
    submitForm(e){
      e.preventDefault();
      const data = {
       firstName: this.state.firstName,
       lastName: this.state.lastName,
       email: this.state.email,
       password: this.state.password
      }
      sendFormData(data).then(res=>{
        if(res.status===200){
          alert(res.data);
          this.props.history.push('/');
        }else{
    
        } 
      });
     }
    render(){
    return(
      
    Register here
    {this.handleChange(e)}} /> {this.state.firstnameError ? Please Enter some value : ''}
    {this.handleChange(e)}} /> {this.state.lastnameError ? Please Enter some value : ''}
    {this.handleChange(e)}} /> {this.state.emailError ? Please Enter valid email address : ''}
    {this.handleChange(e)}} /> {this.state.passwordError ? Please enter some value : ''}
    ); } } export default Signup;

提交回复
热议问题