Guest User

popsute coś

a guest
May 15th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from "react";
  2. import CountriesSelect from "./CountriesSelect"
  3.  
  4. function validate(firstName,
  5.     lastName,
  6.     eMail,
  7.     phone,
  8.     address,
  9.     addressCont,
  10.     zipCode,
  11.     city,
  12.     state,
  13.     country,
  14.     cardNum,
  15.     cardHold,
  16.     cvc) {
  17.     return {
  18.         firstName: firstName.length === 0,
  19.         lastName: lastName.length === 0,
  20.         phone: phone.length === 0,
  21.         address: address.length === 0,
  22.         addressCont: addressCont.length === 0,
  23.         zipCode: zipCode.length === 0,
  24.         city: city.length === 0,
  25.         state: state.length === 0,
  26.         country: country.value === null,
  27.         cardNum: cardNum.length === 0,
  28.         cardHold: cardHold.length === 0,
  29.         cvc: cvc.length === 0 // TU WYWALA UNDEFINED !!
  30.     }
  31. }
  32.  
  33. export default class Form extends React.Component {
  34.     constructor(props) {
  35.         super(props)
  36.         this.state = {
  37.             firstName: '',
  38.             lastName: '',
  39.             eMail: '',
  40.             phone: '',
  41.             address: '',
  42.             addressCont: '',
  43.             zipCode: '',
  44.             city: '',
  45.             state: '',
  46.             country: '',
  47.             cardNum: '',
  48.             cardHold: '',
  49.             cvc: '',
  50.  
  51.             foc_firstName: false,
  52.             foc_lastName: false,
  53.             foc_eMail: false,
  54.             foc_phone: false,
  55.             foc_address: false,
  56.             foc_addressCont: false,
  57.             foc_zipCode: false,
  58.             foc_city: false,
  59.             foc_state: false,
  60.             foc_carNum: false,
  61.             foc_cardHold: false,
  62.             foc_cvc: false,
  63.         }
  64.         this.handleFirstName = this.handleFirstName.bind(this);
  65.         this.handleFocFirstName = this.handleFocFirstName.bind(this)
  66.         this.handleLastName = this.handleLastName.bind(this);
  67.         this.handleFocLastName = this.handleFocLastName.bind(this);
  68.         this.handleEmail = this.handleEmail.bind(this);
  69.         this.handleFocEmail = this.handleFocEmail.bind(this);
  70.         this.handlePhone = this.handlePhone.bind(this);
  71.         this.handleFocPhone = this.handleFocPhone.bind(this);
  72.         this.handleAddress = this.handleAddress.bind(this);
  73.         this.handleFocAddress = this.handleFocAddress.bind(this);
  74.         this.handleAddressCont = this.handleAddressCont.bind(this);
  75.         this.handleFocAddressCont = this.handleFocAddressCont.bind(this);
  76.         this.handleZipCode = this.handleZipCode.bind(this);
  77.         this.handleFocZipCode = this.handleFocZipCode.bind(this);
  78.         this.handleCity = this.handleCity.bind(this);
  79.         this.handleFocCity = this.handleFocCity.bind(this);
  80.         this.handleState = this.handleState.bind(this);
  81.         this.handleFocState = this.handleFocState.bind(this);
  82.         this.handleCountry = this.handleCountry.bind(this);
  83.         this.handleCardNum = this.handleCardNum.bind(this);
  84.         this.handleFocCardNum =this.handleFocCardNum.bind(this);
  85.         this.handleCardHold = this.handleCardHold.bind(this);
  86.     }
  87.  
  88.  
  89.     handleFirstName(evt) {
  90.         this.setState({ firstName: evt.target.value })
  91.     }
  92.     handleFocFirstName(evt) {
  93.         this.setState({ foc_firstName: true })
  94.     }
  95.     handleLastName(evt) {
  96.         this.setState({ lastName: evt.target.value })
  97.     }
  98.     handleFocLastName(evt) {
  99.         this.setState({ foc_lastName: true })
  100.     }
  101.     handleEmail(evt) {
  102.         this.setState({ eMail: evt.target.value })
  103.     }
  104.     handleFocEmail(evt) {
  105.         this.setState({ foc_eMail: true })
  106.     }
  107.     handlePhone(evt) {
  108.         this.setState({ phone: evt.target.value })
  109.     }
  110.     handleFocPhone(evt) {
  111.         this.setState({ foc_phone: true })
  112.     }
  113.     handleAddress(evt) {
  114.         this.setState({ address: evt.target.value })
  115.     }
  116.     handleFocAddress(evt) {
  117.         this.setState({ foc_address: true })
  118.     }
  119.     handleAddressCont(evt) {
  120.         this.setState({ addressCont: evt.target.value })
  121.     }
  122.     handleFocAddressCont(evt) {
  123.         this.setState({ foc_addressCont: true })
  124.     }
  125.     handleZipCode(evt) {
  126.         this.setState({ zipCode: evt.target.value })
  127.     }
  128.     handleFocZipCode(evt) {
  129.         this.setState({ foc_zipCode: true })
  130.     }
  131.     handleCity(evt) {
  132.         this.setState({ city: evt.target.value })
  133.     }
  134.     handleFocCity(evt) {
  135.         this.setState({ foc_city: true })
  136.     }
  137.     handleState(evt) {
  138.         this.setState({ state: evt.target.value })
  139.     }
  140.     handleFocState(evt) {
  141.         this.setState({ foc_state: true })
  142.     }
  143.     handleCountry(evt) {
  144.         this.setState({ country: evt.target.value })
  145.     }
  146.     handleCardNum(evt) {
  147.         this.setState({ cardNum: evt.target.value })
  148.     }
  149.     handleFocCardNum(evt) {
  150.         thos.setState({ foc_carNum: true })
  151.     }
  152.     handleCardHold(evt) {
  153.         this.setState({ cardHold: evt.target.value })
  154.     }
  155.     handleFocCardHold(evt) {
  156.         this.setState({ foc })
  157.     }
  158.     handleCvc(evt) {
  159.         this.setState({ cvc: evt.target.value })
  160.     }
  161.     handleSubmit(evt) {
  162.         if (!this.canBeSubmitted()) {
  163.             evt.preventDefault();
  164.             return
  165.         }
  166.         const { firstName,
  167.             lastName,
  168.             eMail,
  169.             phone,
  170.             address,
  171.             addressCont,
  172.             zipCode,
  173.             city,
  174.             state,
  175.             country,
  176.             cardNum,
  177.             cardHold,
  178.             cvc } = this.state;
  179.         console.table(`First name: ${firstName},
  180.                     Last name: ${lastName},
  181.                     e-mail: ${eMail},
  182.                     phone: ${phone},
  183.                     address: ${address},
  184.                     address cd: ${addressCont},
  185.                     zip code: ${zipCode},
  186.                     city: ${city},
  187.                     state: ${state},
  188.                     country: ${country},
  189.                     card number: ${cardNum},
  190.                     cardHold: ${cardHold},
  191.                     cvc: ${cvc};`
  192.         )
  193.     }
  194.     canBeSubmitted() {
  195.         const errors = validate(this.state.firstName,
  196.             this.state.lastName,
  197.             this.state.eMail,
  198.             this.state.phone,
  199.             this.state.address,
  200.             this.state.addressCont,
  201.             this.state.zipCode,
  202.             this.state.city,
  203.             this.state.state,
  204.             this.state.country,
  205.             this.state.cardNum,
  206.             this.state.cvc
  207.         )
  208.         const isDisabled = Object.keys(errors).some(x => errors[x])
  209.         !isDisabled
  210.     }
  211.     render() {
  212.         const errors = validate(this.state.firstName,
  213.             this.state.lastName,
  214.             this.state.eMail,
  215.             this.state.phone,
  216.             this.state.address,
  217.             this.state.addressCont,
  218.             this.state.zipCode,
  219.             this.state.city,
  220.             this.state.state,
  221.             this.state.country,
  222.             this.state.cardNum,
  223.             this.state.cvc
  224.         )
  225.         const isDisabled = Object.keys(errors).some(x => errors[x])
  226.         return (
  227.             <form onSubmit={this.handleSubmit}>
  228.                 <h3>DELIVERY ADDRESS</h3>
  229.                 <label htmlFor="firstName">First Name <span className="dot"></span></label>
  230.                 <input
  231.                     className={this.state.foc_firstName ? errors.firstName ? "error" : "valid" : ""}
  232.                     type="text"
  233.                     id="firstName"
  234.                     value={this.state.firstName}
  235.                     onChange={this.handleFirstName}
  236.                     onFocus={this.handleFocFirstName} />
  237.                 <label htmlFor="lastName">Last Name <span className="dot"></span></label>
  238.                 <input
  239.                     className={this.state.foc_lastName ? errors.lastName ? "error" : "valid" : ""}
  240.                     value={this.state.lastName}
  241.                     onChange={this.handleLastName}
  242.                     onFocus={this.handleFocLastName}
  243.                     type="text"
  244.                     id="lastName" />
  245.                 <label htmlFor="eMail">E-Mail <span className="dot"></span></label>
  246.                 <input
  247.                     className={this.state.foc_eMail ? errors.eMail ? "error" : "valid" : ""}
  248.                     value={this.state.eMail}
  249.                     onChange={this.handleEmail}
  250.                     onFocus={this.handleFocEmail}
  251.                     type="text"
  252.                     id="eMail"
  253.                 />
  254.                 <label htmlFor="phone">Phone <span className="dot"></span></label>
  255.                 <input
  256.                     className={this.state.foc_phone ? errors.eMail ? "error" : "valid" : ""}
  257.                     value={this.state.phone}
  258.                     onChange={this.handlePhone}
  259.                     onFocus={this.handleFocPhone}
  260.                     type="text"
  261.                     id="phone" />
  262.                 <label htmlFor="address">Address</label>
  263.                 <input
  264.                     className={this.state.foc_address ? errors.address ? "error" : "valid" : ""}
  265.                     value={this.state.address}
  266.                     onChange={this.handleAddress}
  267.                     onFocus={this.handleFocAddress}
  268.                     type="text"
  269.                     id="address" />
  270.                 <label htmlFor="addressCont">Address Cont. <span className="dot"></span></label>
  271.                 <input type="text" id="addressCont" />
  272.                 <label htmlFor="zipCode">Zip Code <span className="dot"></span></label>
  273.                 <input type="text" id="zipCode" />
  274.                 <label htmlFor="city">City <span className="dot"></span></label>
  275.                 <input type="text" id="city" />
  276.                 <label htmlFor="state">State <span className="dot"></span></label>
  277.                 <input type="text" id="state" />
  278.                 <CountriesSelect />
  279.                 <h3>PAYMENT</h3>
  280.                 <label htmlFor="cardNum">Card number <span className="dot"></span></label>
  281.                 <input type="text" id="cardNum" />
  282.                 <label htmlFor="cardHold">Card Holder <span className="dot"></span></label>
  283.                 <input type="text" id="cardHold" />
  284.                 <label htmlFor="cvc">CVC <span className="dot"></span></label>
  285.                 <input type="text" id="cvc" />
  286.                 <button type="submit">BUY</button>
  287.             </form>
  288.         )
  289.     }
  290. }
Advertisement
Add Comment
Please, Sign In to add comment